使用array_keys并获得意外结果

时间:2015-03-25 21:41:20

标签: php arrays

我有一个分配给$ elements的数组。当我使用array_keys来获取密钥时,我得到了你期望的结果。

print_r(array_keys($elements));

结果:

Array
(
    [0] => anchor-namecontentblock_areaBlock0contentblock11_1
    [1] => anchor-namecontentblock_areaBlock0contentblock22_1
    [2] => anchor-namecontentblock_areaBlock0contentblock33_1
...

但是当我尝试使用带有搜索值的array_keys时,我得到一个空数组。

print_r(array_keys($elements, "anchor-namecontentblock_areaBlock0contentblock11_1"));

结果不是:

Array
(
    [0] => 0
)

我错过了什么吗?

2 个答案:

答案 0 :(得分:4)

您正在执行错误的array_keys搜索。您的anchor-name...值在原始数组中是KEYS,而不是VALUES。因此,您的array_keys搜索参数无用 - 它将搜索原始数组的值,例如

$foo = array(
   'anchor-namecontentblock_areaBlock0contentblock11_1' => 'somevalue'
   etc..
                            searched by array_keys---------^^^^^^^^^^

你需要做更多的事情:

$results = array_search('anchor-name...', array_keys($elements)));
           ^^^^^^^^^^^^^

代替。

答案 1 :(得分:3)

将搜索参数指定为array_keys可让您检索与数组中的一个或多个对应的键。您已将其中一个传递给它,因此该函数未返回任何结果。