关于arrays:php array_search的第一个元素返回0?

php array_search returning 0 for the first element?

我有这个代码

1
2
3
4
5
6
$restaurant = array('/restaurant_pos/', '/bar_nightclub_pos/')
$current_page = $_SERVER['REQUEST_URI'];

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

问题是array_search返回0,因为'/ restaurant_pos /'是导致失败的数组中的第一个元素...有关如何检查值是否在数组中而不失败第一个元素的任何想法


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

手册链接:http://php.net/manual/en/function.array-search.php


我认为在这种情况下使用in_array()会更好

1
2
3
4
5
6
$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/zh/function.in-array.php


我已经使用is_numeric函数来实现相同的目的。

1
2
3
if(is_numeric(array_search($entry, $array))){
            //if true, this block will be executed
 }

根据我的经验,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Array
(
    [1] => Array
        (
            [0] => a
            [1] => b
        )

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

array_search("a", $array[3]) !== FALSE)上它返回TRUE相同,因此为了覆盖所有情况,在null元素上,最好使用:

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

希望能帮助到你。