1

我有以下数组:

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

4

1 回答 1

6

来自 PHP 文档

如果第三个参数strict设置为TRUE,则 array_search() 函数将在大海捞针中搜索相同的元素。这意味着它还将检查大海捞针的类型,并且对象必须是相同的实例。

大多数人不知道默认array_search使用==如果你想搜索相同的元素,你需要添加一个严格的参数......我是什么意思?

如果你使用

array_search(0, $array) //it would use == and 0 == 'A'

你需要的是

array_search(0, $array,true) // it would compare with === 0 !== 'A'
                         ^------------ Strict 
于 2012-11-12T15:47:41.687 回答