【发布时间】:2018-10-09 05:57:34
【问题描述】:
今天,我发现 php array_search 函数有一个很奇怪的问题。实际上,我应用的条件是,如果 index 为 0 或更大,则它应该通过 IF 条件,否则不会通过,但它不会像那样运行。
我分析发现,如果输出为FALSE,那么(FALSE >= 0)它也通过了比较值的条件,不知道为什么。谁能解释一下这个问题?
这似乎不是 array_search 功能问题,但我在使用此功能时遇到了问题。
$allowedJobCodesForCC = array( "xyz", "abc");
/* output if value not found in array
var_dump(array_search(strtolower(trim('xyzfd')), $allowedJobCodesForCC));
*/
$output = array_search(strtolower(trim('xyz')), $allowedJobCodesForCC); //output : false
/* array_search function treating false return value and passing it to the condition */
if($output >= 0){
echo 'passed'; //it should not print this condition if return value is FALSE
}
/* correct fix if indexes are numeric */
if(is_numeric($output)){
echo 'passed';
}
【问题讨论】:
-
它没有返回
false。array_search返回找到搜索值的索引,或者在未找到时返回false。您的示例中的返回值为0。0 !== false。 TL;DR - 对返回值使用严格比较。 -
echo $output提供了什么? -
如果您尝试使用不存在的值,则将返回 FALSE。您可以尝试使用 var_dump。
-
好的,但是当使用松散比较检查时,
0 == false -> true,而0 === false -> false。 -
您链接的 php 手册页有一个警告框,解释了可能的返回值的危险
标签: php