我有以下数组:
$array = array (
'a' => 'A',
'b' => 'B',
'c' => 'C'
);
我想了解这种行为:
// true, normal behaviour, there is a 'A' value in my array
echo array_search('A', $array) === 'a';
// true, normal behaviour, there is no 1 value in my array
echo array_search(1, $array) === false;
// true ???? there is no 0 as value in my array
echo array_search(0, $array) === 'a';
为什么array_search(0, $array)
会返回数组的第一个键?
答案 0 :(得分:5)
来自PHP DOC
如果第三个参数严格设置为 TRUE ,则array_search()函数将在haystack中搜索相同的元素。这意味着它还将检查大海捞针中的针的类型,并且对象必须是同一个实例。
大多数人不知道array_search
默认使用==
如果你想搜索相同的元素,你需要添加一个严格的参数......我的意思是什么?
如果您使用
array_search(0, $array) //it would use == and 0 == 'A'
您需要的是
array_search(0, $array,true) // it would compare with === 0 !== 'A'
^------------ Strict