PHP数组搜索返回第一个元素的0?

18

我有这段代码

$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/'是数组中的第一个元素,这导致if语句失败...有没有想法在不在第一个元素上失败的情况下检查值是否在数组中

4个回答

43

2
+1:这在手册中有详细说明(我会在你的回答中添加链接)- 实际上,他们特别强调了解释 - 因此,OP在提问之前显然没有进行研究。 - Spudley
1
哈哈,我自己甚至都没看到过。谢谢你提醒! - user827080
谢谢,我确实查看了文档并注意到了大红框,但我尝试使用"!== false"却失败了,所以我才发了这个问题...感谢@Jan Westerdiep。 - Matt Elhotiby
嘿,别担心。我们都会犯那些微小的错误(然后花费20分钟才有那种“得手”的感觉..!) - user827080

6

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

$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


仍然无法使用array_search和!== FALSE一起工作。这个方法对我有效。谢谢! - Vincent

2
我已经使用is_numeric函数来实现同样的功能。
if(is_numeric(array_search($entry, $array))){
            //if true, this block will be executed
 }

0

根据我的经验,如果你有,例如:

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

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

array_search("a", $array[3]) !== FALSE) 上,它返回 TRUE,因此为了涵盖所有情况,也在 null 元素上使用更好:
if ( (array_search($element, $array) !== FALSE) && ($array) ) {
    echo "found";
}

希望能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接