2010-04-05 14 views

Odpowiedz

33

Cytowanie ręcznego stronie array_search():

zwraca klucz igłą, jeśli jest znaleziony w tablicy, FALSE inaczej.


Czyli trzeba użyć czegoś takiego:

$found = array_search($needle, $haystack); 

if ($found !== false) { 
    // do stuff 
    // when found 
} else { 
    // do different stuff 
    // when not found 
} 

Uwaga użyłem operatora !==, że robi porównania typu wrażliwych; zobacz Comparison Operators, Type Juggling i Converting to boolean więcej szczegółów na temat tego ;-)

+5

'Uwaga Użyłem operatora! ==, który robi wrażliwe na typ porównanie" - właśnie na tym polegał problem. 0 było oceniane na false ... dzięki –

+0

Nie ma za co :-) ;; Zmieniłem moją odpowiedź, aby dodać linki do innych odpowiednich stron podręcznika, btw :-) –

+0

dzięki, ty rock! –

1

Od docs:

Wyszukiwania stóg_siana na igły i zwraca klucz jeśli został on znaleziony w tablicy, FALSE w przeciwnym wypadku.

0

Według oficjalnej dokumentacji na http://php.net/manual/en/function.array-search.php:

Ostrzeżenie Ta funkcja może zwrócić logiczne FALSE, ale może również zwrócić wartość non-logiczna, która FALSE. Aby uzyskać więcej informacji, przeczytaj sekcję o Boolean . Użyj operatora === do przetestowania wartości zwracanej przez tę funkcję z wartości .

Zobacz ten przykład:

$foundKey = array_search(12345, $myArray); 
if(!isset($foundKey)){ 
    // If $myArray is null, then $foundKey will be null too. 
    // Do something when both $myArray and $foundKey are null. 
} elseif ($foundKey===false) { 
    // $myArray is not null, but 12345 was not found in the $myArray array. 
}else{ 
    // 12345 was found in the $myArray array. 
} 
Powiązane problemy