将array_keys与search_value参数一起使用


Using array_keys with search_value parameter

当我需要函数返回具有特定值的键时,我很难理解该函数array_keys如何工作。例如,假设我们有一个这样的数组:

$testArray = array
 (
    [key1] => value1,
    [key2] => value2,
    [key3] => 0
 )

我对array_keys函数的理解告诉我,在给定数组上调用这个函数是这样的:

array_keys($testArray,"value1")

应该给出这样的回应:

Array
(
    [0] => key1
)

但实际上这就是我得到的:

Array
(
    [0] => key1
    [1] => key3
)

我认为这很奇怪。进一步的测试表明,如果我在数组中将数字零作为值,这种事情总是会发生。我搜索它的值并不重要,它总是返回以零作为值的键。此外,仅当 array_keys 的第三个参数(称为 strict)设置为 false 时,才会发生这种情况。如果我将该参数设置为 true,则该函数将按预期工作。

我错过了什么还是这是 PHP 中的问题?我使用的是 PHP 版本 5.5.9。

比较string时,它们将转换为数字。

尝试使用 -

array_keys($testArray,"value1", true);

传递第三个参数true将使其与===进行比较。

strict:确定在搜索过程中是否应使用严格比较 (===)。

array_keys