greg87g
26.02.2009, 11:10:34
Jeśli mam tablicę, w której mam nie znaną mi ilość elementów to czy mogę na podstawie podania wartości elementu odczytać jego indeks?
Szukalem i szukalem ale znalazlem tylko array_search a mi chodzi o cos dokładnie odwrotnego (zeby zwracało indeks np 5)
wookieb
26.02.2009, 11:12:13
No i własnie do tego sluzy ta funkcja. Raczej zle jej w takim razie uzywasz.
phpion
26.02.2009, 11:12:49
Cytat(greg87g @ 26.02.2009, 13:10:34 )

Jeśli mam tablicę, w której mam nie znaną mi ilość elementów to czy mogę na podstawie podania wartości elementu odczytać jego indeks?
Szukalem i szukalem ale znalazlem tylko array_search a mi chodzi o cos dokładnie odwrotnego (zeby zwracało indeks np 5)
Hmmm, przecież
array_search" title="Zobacz w manualu PHP" target="_manual robi dokładnie to co chcesz.
Cytat
array_search — Przeszukuje tablicę pod kątem podanej wartości i w przypadku sukcesu zwraca odpowiedni klucz
greg87g
26.02.2009, 11:19:51
ale nie zwraca indeksu (moze ja myle pojecia, chodzi mi o liczbę porządkową elementu w tablicy gdzi jest jeden klucz)
zalozmy ze talica wyglada tak:
$tablica[0]=cos1
$tablica[1]=cos3
$tablica[2]=cos6
$tablica[3]=cos2
...
$tablica[50]=cosilestam
chodzi mi o to zeby znając wartość "cos20" dostac numerek który zajmuje ta pozycja w tablicy
wookieb
26.02.2009, 11:26:50
No a powiedz mi co robi array_search...
Jak w twojej przykladowej tablicy wyszukamy cos3 to zwroci ci 1. Dodasz do tego kolejne 1 i masz wynik.
Cos2 jest na drugim miejscu w tablicy.
EDIT// Jeżeli źle cię rozumiem to podaj bardzo jasny przykład.
greg87g
26.02.2009, 11:40:36
no skoro tak mowicie to, sproboje. narazie nie mam jak ale faktycznie moze byc tak ze podalem zly argument, bo komunikat wlasnie brzmial cos w tym stylu ze "if not a vaild in array_search" czy jakos tak, no ja zrozumialem to w ten sposob ze ta funkcja szuka tylko jesli sie jej poda jakis inny rodzaj argumentu niz tekstowy - jak ja podawalem.
to temat powiedzmy ze zamkniety.
wookieb
26.02.2009, 11:44:06
Pewnie zamiast tablicy podałes inny argument innego typu (np w wyniku jakies bledu wystepujacego w skrypcie)
piotrooo89
26.02.2009, 11:44:58
zwróć uwagę co pisze w manualu:
Cytat
array array_keys ( array $wejście [, mixed $szukana_wartość [, bool $ścisłe_porównanie ]] )
czyli w twoim wypadku cos20
czyli mega łopatologicznie:
funkcja array_keys zwraca tablice jako argument podajesz tablice, jako argumenty opcjonalne podajesz wartość jaka ma być szukana (to Cię interesuje) i możesz porównać typ przez ===
wsio. i wszystko pisze po polsku...
greg87g
26.02.2009, 12:27:28
no wlasnie ... i pisze ze zwraca tablice powstałą z innej tablicy... a mi chodzilo nie o tablice z tablicy tylko o pozycje elementu (i tez to po polsku napisalem)
wiem ze pewno zaraz sie posypie lawina odpowiedzi typu "przeciez uzywajac te funkcje mozna dosc do tego co chcesz" to odrazu odsylam do zapoznania sie z nazwą tego działu.
btw mogli w manualu napisac ze funkcja moze zwrocic indeks... chocby po angielsku
piotrooo89
26.02.2009, 12:35:59
jeśli masz już tablice z indeksami to możesz iterować po niej foreach'em i wyciągać interesujące Cię wartości.
wookieb
26.02.2009, 12:37:15
Cytat(greg87g @ 26.02.2009, 12:27:28 )

btw mogli w manualu napisac ze funkcja moze zwrocic indeks... chocby po angielsku
Cytat
Przeszukuje tablicę pod kątem podanej wartości i w przypadku sukcesu zwraca odpowiedni klucz
Klucz to inaczej indeks

. No ale mogłeś tego nie do końca wiedzieć

A ty piotroo po cholere sypiesz niepotrzebnymi funkcjami skoro kolega już dostał wyczerpująca odpowiedź.
greg87g
26.02.2009, 13:10:53
no ja myslalem ze klucz to jest nazwa pola, a indeks to jego nr. ale thx
piotrooo89
26.02.2009, 13:13:16
Cytat(wookieb @ 26.02.2009, 12:37:15 )

A ty piotroo po cholere sypiesz niepotrzebnymi funkcjami skoro kolega już dostał wyczerpująca odpowiedź.
sory wprowadziłem lekkie zamieszanie tym array_keys. moja wina... :/ (za szybko przeczytałem) to co podał
wookieb w 100% Ci wystarczy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.