2010-04-05 41 views
10

¿Qué devuelve array_search() si no se ha encontrado nada?[PHP]: ¿Qué devuelve array_search() si no se encontró nada?

que tienen la necesidad de la siguiente lógica:

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

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

Es más rápido para probarlo y ver el resultado de pedir a él. –

+0

compruebe el resultado is_int() viendo como devuelve una clave. – PolarTheDog

Respuesta

33

Citando la página del manual de array_search():

devuelve la clave para la aguja si se encuentra en la matriz, FALSE de lo contrario.


que significa que tienes que usar algo como:

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

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

Nota utilicé el operador !==, que hace una comparación de tipo sensible; ver Comparison Operators, Type Juggling, y Converting to boolean para más detalles acerca de ese ;-)

+5

'Nota Utilicé el operador! ==, que hace una comparación sensible al tipo' - ese es exactamente el problema. 0 estaba evaluando a falso ... gracias –

+0

De nada :-) ;; He editado mi respuesta para agregar enlaces a otras páginas relevantes del manual, por cierto :-) –

+0

gracias, ¡rock! –

1

A partir de los documentos:

Busca en el pajar de la aguja y retorna la clave si se encuentra en la matriz, de lo contrario.

3

si sólo está comprobando si existe el valor, in_array es el camino a seguir.

0

Según la documentación oficial en http://php.net/manual/en/function.array-search.php:

Advertencia Esta función puede devolver FALSE, pero también puede devolver un valor no booleano que será evaluado FALSE. Lea la sección en Booleanos para obtener más información. Use el operador === para probar el valor de retorno de esta función.

ver este ejemplo:

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