似乎你不能在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索引中找到匹配并将其评估为true?
答案 0 :(得分:31)
这在文档中明确提到。您需要使用===
或!==
:
$key = array_search(...);
if ($key !== false) ...
否则,当$key
为0
时,evaluates to false
作为布尔值进行测试时。
答案 1 :(得分:4)
第二个示例块中的条件赋予!==
运算符执行顺序优先级,但是您希望执行相反的操作。
if (($key = array_search(100,$test)) !== false) {
!==
更高优先级高于==
,这使得必须使用括号。
答案 2 :(得分:1)
$key = array_search($what, $array);
if($key !== false and $array[$key] == $what) {
return true;
}
它更安全
答案 3 :(得分:0)
if(($key = array_search(103,$test)) !== false){
}
答案 4 :(得分:0)
$test=array(100, 101, 102, 103);
if (($key = array_search(100,$test)) === false) {
echo "Not found";
} else{
echo $key;
}