2010-04-05 4 views
10

Was gibt array_search() zurück, wenn nichts gefunden wurde?[PHP]: Was gibt array_search() zurück, wenn nichts gefunden wurde?

Ich habe die Notwendigkeit für die folgende Logik:

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

if($found){ 
    //do stuff 
} else { 
    //do different stuff 
} 
+1

Es ist schneller, es zu versuchen und das Ergebnis als zu fragen es zu sehen. –

+0

check Ergebnis is_int() zu sehen, wie es einen Schlüssel zurückgibt .. – PolarTheDog

Antwort

33

die Handbuch Seite von array_search() Zitiert:

Gibt den Schlüssel für die Nadel, wenn sie im Array gefunden wird, FALSE ansonsten.


Was bedeutet, dass Sie so etwas wie verwenden:

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

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

Hinweis Ich benutzte den !== Betreiber, die einen Typ empfindlichen Vergleich tut; siehe Comparison Operators, Type Juggling und Converting to boolean für weitere Details zu diesen ;-)

+5

'Beachten Sie, dass ich den! == Operator verwendet, der einen typensensitiven Vergleich durchführt - genau das war das Problem. 0 bewertete zu falsch ... danke –

+0

Gern geschehen :-) ;; Ich habe meine Antwort bearbeitet, um Links zu anderen relevanten Seiten des Handbuchs hinzuzufügen, btw :-) –

+0

danke, du rockst! –

1

Aus der Dokumentation:

Sucht nach Nadel Heuhaufen und gibt den Schlüssel, wenn es in dem Feld gefunden wird, andernfalls FALSCH.

3

wenn Sie überprüfen nur, wenn der Wert vorhanden ist, in_array der Weg zu gehen ist.

0

Nach der offiziellen Dokumentation unter http://php.net/manual/en/function.array-search.php:

Warnung Diese Funktion kann sowohl das Boolsche FALSE zurück, kann aber auch eine Rückkehr Nicht-Booleschen Wert, der zu FALSE ausgewertet wird. Bitte lesen Sie den Abschnitt Boolesche Informationen für weitere Informationen. Verwenden Sie den Operator ===, um den Rückgabewert dieser Funktion zu testen.

Sehen Sie folgendes Beispiel:

$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. 
}