[PHP]:如果找不到任何内容,array_search()会返回什么?

时间:2010-04-05 22:43:07

标签: php arrays search

如果找不到任何内容,array_search()会返回什么?

我需要以下逻辑:

$found = array_search($needle, $haystack);

if($found){
  //do stuff
} else {
  //do different stuff
}

6 个答案:

答案 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 OperatorsType JugglingConverting to boolean; - )

答案 1 :(得分:3)

如果您只是检查该值是否存在,in_array是可行的方法。

答案 2 :(得分:1)

来自文档:

  

搜索haystack for needle并返回键,如果在数组中找到它,否则返回FALSE。

答案 3 :(得分:1)

如果找不到任何内容,

array_search将返回FALSE。如果找到针头,它将返回针头的阵列键。

更多信息:http://php.net/manual/en/function.array-search.php

答案 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 0not 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
?>