PHP - 获取数组值的键名

时间:2012-01-04 15:32:54

标签: php arrays array-key

我有一个数组如下:

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'。我怎么能这样做?

9 个答案:

答案 0 :(得分:257)

如果您有值并想要找到密钥,请使用array_search(),如下所示:

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

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

答案 1 :(得分:49)

key($arr);

将返回当前数组元素的键值

http://uk.php.net/manual/en/function.key.php

答案 2 :(得分:32)

如果我理解正确,你不能简单地使用:

foreach($arr as $key=>$value)
{
  echo $key;
}

请参阅PHP manual

答案 3 :(得分:16)

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

的东西
$arr[$key]

这意味着$ key包含密钥的值。

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

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

会给你

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

答案 4 :(得分:14)

是的,你可以在PHP中提供这种支持的少数几种语言之一。

foreach($arr as $key=>$value)
{

}

答案 5 :(得分:6)

使用array_keys()获取所有唯一键的数组。

请注意,也可以使用$arr等数字索引访问包含$arr[0]等命名键的数组。

http://php.net/manual/en/function.array-keys.php

答案 6 :(得分:6)

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

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

答案 7 :(得分:4)

这是另一个选项

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

答案 8 :(得分:0)

你可以使用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 - Manual