如果找不到任何内容,array_search()会返回什么?
我需要以下逻辑:
$found = array_search($needle, $haystack);
if($found){
//do stuff
} else {
//do different stuff
}
答案 0 :(得分:39)
引用array_search()
的手册页:
如果是,则返回针的键 在数组中找到,
FALSE
否则。
这意味着您必须使用以下内容:
$found = array_search($needle, $haystack);
if ($found !== false) {
// do stuff
// when found
} else {
// do different stuff
// when not found
}
注意我使用了!==
运算符,它进行了类型敏感的比较;有关详细信息,请参阅Comparison Operators,Type Juggling和Converting to boolean; - )
答案 1 :(得分:3)
如果您只是检查该值是否存在,in_array是可行的方法。
答案 2 :(得分:1)
来自文档:
搜索haystack for needle并返回键,如果在数组中找到它,否则返回FALSE。
答案 3 :(得分:1)
array_search将返回FALSE。如果找到针头,它将返回针头的阵列键。
答案 4 :(得分:1)
根据http://php.net/manual/en/function.array-search.php的官方文件:
警告此函数可能返回布尔值FALSE,但也可能返回a 非布尔值,其值为FALSE。请阅读有关的部分 布尔值获取更多信息。使用===运算符进行测试 返回此函数的值。
见这个例子:
$foundKey = array_search(12345, $myArray);
if(!isset($foundKey)){
// If $myArray is null, then $foundKey will be null too.
// Do something when both $myArray and $foundKey are null.
} elseif ($foundKey===false) {
// $myArray is not null, but 12345 was not found in the $myArray array.
}else{
// 12345 was found in the $myArray array.
}
答案 5 :(得分:0)
必须小心区分found, index 0
和not found
,为此使用!== false
测试。示例:
<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$i = array_search('red', $array);
echo ($i !== false) ? $i : -1; // 1
$i = array_search('blue', $array);
echo ($i !== false) ? $i : -1; // 0
$i = array_search('blueee', $array);
echo ($i !== false) ? $i : -1; // -1 i.e. not found
?>