将array_keys与search_value参数一起使用

时间:2016-03-09 10:11:44

标签: php

当我需要它返回具有与之关联的特定值的键时,我无法理解函数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版。

1 个答案:

答案 0 :(得分:2)

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

尝试 -

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

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

  

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

array_keys