Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php:如何从数字索引中获取关联数组键?_Php_Key_Associative Array - Fatal编程技术网

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

php:如何从数字索引中获取关联数组键?,php,key,associative-array,Php,Key,Associative Array,如果我有: $array = array( 'one' =>'value', 'two' => 'value2' ); 如何从$array[1]获取字符串one $array = array( 'one' =>'value', 'two' => 'value2' ); $allKeys = array_keys($array); echo $allKeys[0]; 这将输出: one fruit1<br /> fruit4<br /> fr

如果我有:

$array = array( 'one' =>'value', 'two' => 'value2' );
如何从
$array[1]
获取字符串
one

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

$allKeys = array_keys($array);
echo $allKeys[0];
这将输出:

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

或者如果你需要它在一个循环中

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

你没有。您的阵列没有密钥
[1]
。你可以:

  • 创建一个新数组,其中包含键:

    $newArray = array_keys($array);
    echo $newArray[0];
    
    echo array_keys($array)[$i];
    
    但是值“one”位于
    $newArray[0]
    ,而不是
    [1]

    捷径是:

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

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


这完全取决于你到底想做什么。事实是,
[1]
与“一”不对应,无论你如何转动它。

你可以这样做:

$array = array( 'one' =>'value', 'two' => 'value2' );
$keys  = array_keys($array);
echo $keys[0]; // one
echo $keys[1]; // two
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...
我还没有试过这个代码,但我很确定它会起作用

祝你好运

该功能帮助了我,而且非常简单:

函数的作用是:返回 当前正由内部指针指向。它不动 指针以任何方式移动。如果内部指针指向端点之外 如果元素列表中的元素为空或数组为空,则key()返回NULL

例如:


上述示例将输出:

one
fruit1<br />
fruit4<br />
fruit5<br />
1
水果4
水果5

如果您只计划使用一个特定的键,则可以使用一行来完成此操作,而无需存储所有键的数组:

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

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

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

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

echo key($array);
next($array);
echo key($array);
如果是第二个元素,即
$array[1]
,您可以尝试:

echo key($array);
next($array);
echo key($array);
我认为当所需元素是数组的第一个、第二个或最多第三个元素时,应该使用此方法。对于其他情况,应使用循环,否则代码可读性会降低。

还有一个示例:

获取数组中最频繁的出现次数:

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"

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

它会回显所有键。但topicstarter需要通过数字索引获取密钥。不一样,我很清楚这一点。但考虑到topicstarter对php来说是新手,这可能是他试图实现的,只是不知道foreach语法;)换句话说,这是关于返回关联数组的第n个数组键;这在将来可能行不通。相反,请详细介绍该函数的功能以及如何使用它。谢谢。。。这就是for-loopNote中任何人所需的全部内容:这需要PHP5.4+-|。@Pang很高兴知道!谢谢