Php 如果$needle为0,则数组_search()返回1
这是我发现的奇怪的事情 现在,如果要搜索的针对于eg为0:Php 如果$needle为0,则数组_search()返回1,php,arrays,Php,Arrays,这是我发现的奇怪的事情 现在,如果要搜索的针对于eg为0: $val = 0; $key = array_search($val, $test); 现在,$key返回为1(第一个键) 是否有人知道如何处理此类行为并为此检查返回false?它在任何地方都有记录吗?我已经找过了,但还是没找到 谢谢 这不是一个bug,而是PHP处理比较的方式。由于$val是一个整数,PHP将把字符串转换为整数进行比较。将'first'转换为整数将得到0,因此比较结果是0==0,这显然是正确的。这就是它返回第一个结果
$val = 0;
$key = array_search($val, $test);
现在,$key
返回为1
(第一个键)
是否有人知道如何处理此类行为并为此检查返回false
?它在任何地方都有记录吗?我已经找过了,但还是没找到
谢谢 这不是一个bug,而是PHP处理比较的方式。由于
$val
是一个整数,PHP将把字符串转换为整数进行比较。将'first'
转换为整数将得到0
,因此比较结果是0==0
,这显然是正确的。这就是它返回第一个结果的原因。这就是为什么array\u search
也有一个$strict
参数……这里有详细的说明,重复:(我不觉得这么简单-我发现的只是在数组中搜索一个文本
,以为会对0进行特殊处理。但是Styphon的回答说明了一切。这只是转换发生了。谢谢!不知怎么的,转换没有点击我。谢谢:-)
$val = 0;
$key = array_search($val, $test);