array_search无法按预期工作

时间:2012-11-12 15:45:20

标签: php arrays type-conversion

我有以下数组:

$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)会返回数组的第一个键?

1 个答案:

答案 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