php:如何从数字索引中获取关联数组键?

时间:2010-11-04 10:36:53

标签: php key associative-array

如果我有:

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

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

10 个答案:

答案 0 :(得分:103)

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

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

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

    但值“one”位于$newArray[0],而不是[1] 捷径是:

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

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

    echo array_search('value', $array);
    

这完全取决于你想要做什么。事实是,[1]不对应于“一”你转向它的方式。

答案 1 :(得分:51)

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

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

将输出:

one

答案 2 :(得分:16)

如果您只计划使用一个密钥,您可以使用一行完成此操作,而无需为所有密钥存储数组:

echo array_keys($array)[$i];

答案 3 :(得分:5)

或者如果你需要它循环

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

答案 4 :(得分:2)

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

答案 5 :(得分: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...

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

祝你好运!

答案 6 :(得分:0)

key功能帮助了我,非常简单

答案 7 :(得分:0)

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

echo key($array);

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

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

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

答案 8 :(得分:0)

再举一个例子:

获取数组中出现频率最高的:

PHP >= 7.3:

$ php --version
PHP 7.4.3 (cli) (built: Oct  6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

$ php -a
Interactive mode enabled

php > $a = array_count_values(array('abc','abc','def','def','def'));
php > var_dump($a);
array(2) {
  ["abc"]=>
  int(2)
  ["def"]=>
  int(3)
}
php > arsort($a);
php > var_dump($a);
array(2) {
  ["def"]=>
  int(3)
  ["abc"]=>
  int(2)
}
php > var_dump(array_key_first($a));
string(3) "def"
php > var_dump(array_keys($a)[1]);
string(3) "abc"

如果您有密钥,您可以轻松查询值(= 频率)。

答案 9 :(得分:-1)

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

    function get_key($array, $index){
      $idx=0;
      while($idx!=$index  && next($array)) $idx++;
      if($idx==$index) return key($array);
      else return '';
    }