PHP-获取数组值的键名


157

我有如下数组:

function example() {
    /* some stuff here that pushes items with
        dynamically created key strings into an array */

    return array( // now lets pretend it returns the created array
        'firstStringName' => $whatEver,
        'secondStringName' => $somethingElse
    );
}

$arr = example();

// now I know that $arr contains $arr['firstStringName'];

我需要找出的索引,$arr['firstStringName']以便能够遍历array_keys($arr)'firstStringName'通过其索引返回键字符串。我怎样才能做到这一点?


您能否详细说明您要实现的目标?
nikc.org 2012年

Answers:


332

如果您有一个值并想找到该键,请按以下方式使用array_search()

$arr = array ('first' => 'a', 'second' => 'b', );
$key = array_search ('a', $arr);

$key现在将包含值的键'a'(即'first')。


21
array_filter()如果您需要返回所有匹配的结果,而不仅仅是第一个匹配的结果,则可以使用,因为它保留了键。
Mike Lyons 2014年

5
我想在这里注意一点:在我发现对数组排序(sort($ arr))会删除键名并求助于默认的0、1、2等索引值之前,此解决方案不适用于我。因此,如果要排序,请使用asort(asort($ arr))。这将保持键值。php.net/manual/en/function.asort.php
Rich701 '17



18

如果名称是动态的,那么您必须具有类似

$arr[$key]

这意味着$ key包含键的值。

您可以array_keys()用来获取数组的所有键,例如

$arr = array('a' => 'b', 'c' => 'd')
$x = array_keys($arr);

会给你

$x = array(0 => 'a', 1 => 'c');


13

如果您需要返回具有相同值的数组元素,请使用array_keys()function

$array = array('red' => 1, 'blue' => 1, 'green' => 2);
print_r(array_keys($array, 1));

11

这是另一种选择

$array = [1=>'one', 2=>'two', 3=>'there'];
$array = array_flip($array);
echo $array['one']; 


4

您可以使用php的键功能获取键名称:

<?php
    $array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'apple',
    'fruit5' => 'apple');

    // this cycle echoes all associative array
    // key where value equals "apple"
    while ($fruit_name = current($array)) {
      if ($fruit_name == 'apple') {
        echo key($array).'<br />';
      }
    next($array);
     }
?>

像这里:PHP:key-手册

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.