2010-04-05 5 views
10

Que retourne array_search() si rien n'a été trouvé?[PHP]: Que retourne array_search() si rien n'a été trouvé?

J'ai la nécessité de la logique suivante:

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

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

Il est plus rapide de l'essayer et voir le résultat que lui demander. –

+0

vérifier le résultat is_int() vu qu'il retourne une clé .. – PolarTheDog

Répondre

33

Citant la page de manuel de array_search():

Renvoie la clé pour aiguille si elle est trouvé dans le tableau, FALSE sinon.


Ce qui signifie que vous devez utiliser quelque chose comme:

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

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

Remarque je l'opérateur !==, qui fait une comparaison de type sensible; voir Comparison Operators, Type Juggling et Converting to boolean pour plus de détails à ce sujet ;-)

+5

'Note J'ai utilisé l'opérateur! ==, qui fait une comparaison sensible au type' - c'est exactement ce que le problème était. 0 évaluait à faux ... merci –

+0

Vous êtes les bienvenus :-) ;; J'ai édité ma réponse pour ajouter des liens à d'autres pages pertinentes du manuel, btw :-) –

+0

merci, vous basculez! –

1

De la documentation:

recherche needle dans haystack et retourne la clé si elle se trouve dans le tableau, sinon FALSE. Array_search retournera FALSE si rien n'est trouvé.

3

si vous êtes en train de vérifier si la valeur existe, in_array est le chemin à parcourir.

0

Selon la documentation officielle à http://php.net/manual/en/function.array-search.php:

Avertissement Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur non booléenne qui évalue à FALSE. Veuillez lire la section sur Booléens pour plus d'informations. Utilisez l'opérateur === pour tester la valeur de retour de cette fonction.

Voir cet exemple:

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