PHP:如何从数字索引获取关联的数组键?


75

如果我有:

$array = array( 'one' =>'value', 'two' => 'value2' );

如何获取字符串one从后面$array[1]


3
换句话说,这是关于返回关联数组的第n个数组键。
Sandeepan Nath

Answers:


117

你不知道 您的数组没有键[1]。你可以:

  • 制作一个新数组,其中包含键:

    $newArray = array_keys($array);
    echo $newArray[0];
    

    但是“一个”的值$newArray[0]不是[1]
    快捷方式是:

    echo current(array_keys($array));
    
  • 获取数组的第一个键:

     reset($array);
     echo key($array);
    
  • 获取与值“ value”相对应的键:

    echo array_search('value', $array);
    

这一切都取决于您到底要做什么。事实是,[1]无论您以哪种方式将其都不对应于“一个”。


55
$array = array( 'one' =>'value', 'two' => 'value2' );

$allKeys = array_keys($array);
echo $allKeys[0];

将输出:

one

17

如果仅打算使用一个键,则可以用一行完成此操作,而不必为所有键存储一个数组:

echo array_keys($array)[$i];

谢谢...这是for循环中任何人所需要的
安德鲁(Andrew)

3
注意:这需要PHP 5.4+-源1 | 来源2

@Pang很高兴知道!谢谢。
StarCrashr

8

或者如果您需要循环使用

foreach ($array as $key => $value)
{
    echo $key . ':' . $value . "\n";
}
//Result: 
//one:value
//two:value2

2
它呼应所有按键。但是topicstarter需要通过数字索引来获取密钥。不一样
Alex Pliutau,2010年

我很清楚这一点。但是考虑到topicstarter是php的新知识,这可能是他试图实现的,只是不知道foreach语法;)
Decko 2010年

2
$array = array( 'one' =>'value', 'two' => 'value2' );
$keys  = array_keys($array);
echo $keys[0]; // one
echo $keys[1]; // two

0

您可以这样进行:

function asoccArrayValueWithNumKey(&$arr, $key) {
   if (!(count($arr) > $key)) return false;
   reset($array);
   $aux   = -1;
   $found = false;
   while (($auxKey = key($array)) && !$found) {
      $aux++;
      $found = ($aux == $key);
   }
   if ($found) return $array[$auxKey];
   else return false;
}

$val = asoccArrayValueWithNumKey($array, 0);
$val = asoccArrayValueWithNumKey($array, 1);
etc...

还没有尝试过代码,但是我很确定它会起作用。

祝好运!


0

如果它是第一个元素,即$array[0],您可以尝试:

echo key($array);

如果它是第二个元素,即$array[1],您可以尝试:

next($array);
echo key($array);

我认为,当所需元素是数组的第一个,第二个或至多第三个元素时,应使用此方法。在其他情况下,应使用循环,否则代码的可读性会降低。


0

功能帮助我,是非常简单的:

key()函数仅返回内部指针当前指向的数组元素的键。它不会以任何方式移动指针。如果内部指针指向元素列表的末尾或数组为空,则key()返回NULL。

例:

<?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);
    }
?>

上面的示例将输出:

fruit1<br />
fruit4<br />
fruit5<br />

请不要仅仅发布链接;将来可能无法使用。相反,请扩展该函数的功能以及使用方法。
Andrew Arnold 2014年

-1

扩展Ram Dane的答案,函数是获取数组当前索引键的另一种方法。您可以创建以下功能,

    function get_key($array, $index){
      $idx=0;
      while($idx!=$index  && next($array)) $idx++;
      if($idx==$index) return key($array);
      else return '';
    }
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.