11

似乎您不能使用 PHP 中的 search_array 函数来搜索 0 索引并将其评估为真。

例如,考虑以下代码:

$test=array(100, 101, 102, 103);

if($key=array_search(100,$test)){

     echo $key;

}

else{

     echo "Not found";

} 

在大海捞针中找到针'100',键返回为0。到目前为止一切顺利,但是当我评估搜索是否成功时,它失败了,因为返回的值为0,等于false!

php 手册建议使用 '!==' 但这样做不会返回键(数组索引),而是返回 1 或 0:

if($key=(array_search(103,$test)!== false)){

}

那么如何才能成功搜索数组,在 0 索引中找到匹配项并将其评估为真呢?

4

5 回答 5

38

这在文档中明确提到。您需要使用===!==

$key = array_search(...);

if ($key !== false) ...

否则, when $keyis 0,其计算结果为falsewhen 被测试为布尔值。

于 2013-04-10T19:13:05.197 回答
5

The conditional in your second example block gives execution order priority to the !== operator, you want to do the opposite though.

if (($key = array_search(100,$test)) !== false) {

!== has higher precedence than == which makes the parentheses necessary.

于 2013-04-10T19:15:28.880 回答
1
$key = array_search($what, $array);
if($key !== false and $array[$key] == $what) {
 return true;
}

it's more secure

于 2013-04-10T19:17:43.530 回答
0
if(($key = array_search(103,$test)) !== false){

}
于 2013-04-10T19:15:18.757 回答
0
$test=array(100, 101, 102, 103);

if (($key = array_search(100,$test)) === false) {
    echo "Not found";
} else{
    echo $key;
} 
于 2013-04-11T00:16:26.687 回答