PHP - 获取数组值的键名

Posted

技术标签:

【中文标题】PHP - 获取数组值的键名【英文标题】:PHP - Get key name of array value 【发布时间】:2012-02-02 12:06:39 【问题描述】:

我有一个数组如下:

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'。我该怎么做?

【问题讨论】:

您能否详细说明您要实现的目标的用例? 【参考方案1】:

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

请注意,具有命名键的数组(例如 $arr)也可以使用数字索引访问,例如 $arr[0]

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

【讨论】:

【参考方案2】:
key($arr);

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

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

【讨论】:

@AnthonyRutledge 这将只返回内部指针当前“指向”的内容。如果我们需要另一个引用,那么我们应该使用 zrvans 方法,它专门寻找请求的值。【参考方案3】:

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

$arr[$key]

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

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

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

会给你

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

【讨论】:

【参考方案4】:

是的,你可以事实上 php 是少数提供这种支持的语言之一..

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



【讨论】:

根据搜索,这不是相关的答案,而且更耗时。. 编码效率较低【参考方案5】:

如果您有一个值并想找到密钥,请像这样使用array_search()

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

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

【讨论】:

array_filter() 可以用于如果您需要返回所有匹配结果而不是只返回第一个匹配结果,因为它保留了键。 我认为这里值得注意的一点:这个解决方案对我不起作用,直到我发现对数组进行排序 (sort($arr)) 会删除键名,并使用默认值 0,1 ,2 等指标值。因此,如果要排序,请使用 asort (asort($arr))。这维护了键值。 php.net/manual/en/function.asort.php【参考方案6】:

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

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

  echo $key;

见PHP manual

【讨论】:

我认为他正在寻找array_search php函数-php.net/manual/en/function.array-search.php【参考方案7】:

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

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

【讨论】:

【参考方案8】:

你可以使用php的key函数来获取key的名字:

<?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

【讨论】:

【参考方案9】:

这是另一种选择

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

【讨论】:

以上是关于PHP - 获取数组值的键名的主要内容,如果未能解决你的问题,请参考以下文章

php数组操作之获取数组元素索引(键)值

php 中已知数组的键名,怎么获得键值?

PHP 将二维数组中某列值作为数组的键名

php数组的重复值如何过滤掉

PHP 根据配置转换数组中的键名 方便给前端的时候改键名

php合并数组并保留键值的方法