2011-07-19 36 views
8

tengo este códigophp array_search devuelve 0 para el primer elemento?

$restaurant = array('/restaurant_pos/', '/bar_nightclub_pos/') 
$current_page = $_SERVER['REQUEST_URI']; 

if (array_search($current_page, $restaurant)) { 
    echo "KEEP ME"; 
} 

el problema es la array_search está regresando 0 porque '/ restaurant_pos /' es el primer elemento de la matriz que está causando el caso de fallar ... alguna idea sobre cómo comprobar si el valor está en la matriz sin fallar en el primer elemento

Respuesta

24
if (array_search($current_page, $restaurant) !== FALSE) { 
    echo "KEEP ME"; 
} 

enlace Manual: http://php.net/manual/en/function.array-search.php

+2

+1: esto está documentado en el manual (Voy a añadir el enlace a su respuesta) - de hecho , hacen un punto de explicarlo cuidadosamente, por lo que OP claramente no investigó antes de preguntar. – Spudley

+1

Jaja, nunca lo vi yo mismo. Gracias por eso! –

+0

gracias y miré la documentación y noté la gran caja roja, pero lo intenté! == falso y falló así que publiqué la pregunta ... gracias @Jan Westerdiep – Trace

0

Desde mi propia experiencia, si tienes, por ejemplo:

Array 
(
    [1] => Array 
     (
      [0] => a 
      [1] => b 
     ) 

    [2] => Array 
     (
      [0] => b 
     ) 
    [4] => Array 
     ( 
      [0] => c 
     ) 
) 

En array_search("a", $array[3]) !== FALSE) se devuelve TRUE la misma, por lo que para cubrir todos los casos, también en null elemento, que es un mejor uso:

if ((array_search($element, $array) !== FALSE) && ($array)) { 
    echo "found"; 
} 

espero que ayude.

2

Creo que va a ser mejor usar in_array() en este caso

$restaurant = array('/restaurant_pos/', '/bar_nightclub_pos/') 
$current_page = $_SERVER['REQUEST_URI']; 

if (in_array($current_page, $restaurant)) { 
    echo "KEEP ME"; 
} 

http://php.net/manual/en/function.in-array.php

Cuestiones relacionadas