Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果$needle为0,则数组_search()返回1_Php_Arrays - Fatal编程技术网

Php 如果$needle为0,则数组_search()返回1

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,这显然是正确的。这就是它返回第一个结果

这是我发现的奇怪的事情

现在,如果要搜索的针对于eg为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);