参见英文答案 >
PHP in_array() / array_search() odd behaviour2个
我有这个数组:
我有这个数组:
$ar = [ 'key1'=>'John','key2'=>0,'key3'=>'Mary' ];
而且,如果我写:
$idx = array_search ('Mary',$ar); echo $idx;
我明白了:
key2
我在网上搜索过,这不是隔离问题.似乎当关联数组包含0值时,如果未设置strict参数,则array_search将失败.
还有不止一个bug warnings,都被拒绝了动机:“array_search()默认情况下进行松散比较”.
好的,我使用严格的参数来解决我的小问题……
您需要将第三个参数设置为true才能使用严格比较.请看下面的解释:
array_search使用==在搜索期间比较值
FORM PHP DOC
If the third parameter strict is set to TRUE then the array_search() function will search for identical elements in the haystack. This means it will also check the types of the needle in the haystack,and objects must be the same instance.
第二个元素是0,在搜索过程中字符串被转换为0
简单测试
var_dump("Mary" == 0); //true var_dump("Mary" === 0); //false
$key = array_search("Mary",$ar,true); ^---- Strict Option var_dump($key);
产量
string(4) "key3"