当我需要它返回具有与之关联的特定值的键时,我无法理解函数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版。
答案 0 :(得分:2)
比较string
时,它们会转换为数字。
尝试 -
array_keys($testArray,"value1", true);
传递第三个参数true
将使其与===
进行比较。
strict:确定在搜索过程中是否应使用严格比较(===)。