192

我的关联数组:

$arr = array(
   1 => "Value1",
   2 => "Value2",
   10 => "Value10"
);

使用以下代码,$v填充$arr的值

 foreach($arr as $v){
    echo($v);    // Value1, Value2, Value10
 }

我如何获得$arr's 的钥匙?

 foreach(.....){
    echo($k);    // 1, 2, 10
 }
4

12 回答 12

363

你可以做:

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

PHP 文档中所述。

于 2009-12-23T09:44:53.887 回答
74

如果您使用array_keys(),PHP 将为您提供一个仅包含键的数组:

$keys = array_keys($arr);
foreach($keys as $key) {
    echo($key);
}

或者,您可以这样做:

foreach($arr as $key => $value) {
    echo($key);
}
于 2009-12-23T09:43:29.097 回答
42

没有人用常规for循环回答?有时我发现它更具可读性并且更喜欢for所以foreach
这里是:

$array = array('key1' => 'value1', 'key2' => 'value2'); 

$keys = array_keys($array);

for($i=0; $i < count($keys); ++$i) {
    echo $keys[$i] . ' ' . $array[$keys[$i]] . "\n";
}

/*
  prints:
  key1 value1
  key2 value2
*/
于 2016-10-19T19:04:59.717 回答
11
foreach($array as $k => $v)

其中 $k 是键,$v 是值

或者,如果您只需要密钥,请使用 array_keys()

于 2009-12-23T09:44:46.553 回答
9

我使用以下循环从关联数组中获取键和值

foreach ($array as $key => $value)
{
  echo "<p>$key = $value</p>";
}
于 2015-08-26T15:28:36.403 回答
5

以下将允许您同时获取键和值。

foreach ($arr as $key => $value)
{
  echo($key);
}
于 2009-12-23T09:44:42.180 回答
4

虽然可以说不太清楚,但这种方法的速度大约快了大约 3.5 倍(至少在我用来测试的盒子上)

$foo = array(
    1 => "Value1",
    2 => "Value2",
    10 => "Value10"
);
while($bar = each($foo)){
    echo $bar[0] . " => " . $bar[1];
}

我想这是因为 foreach 在迭代它之前复制了整个数组。

于 2014-07-08T14:49:45.983 回答
1

哦,我在PHP 手册中找到了。

foreach ($array as $key => $value){
    statement
}

当前元素的键将在每个循环中分配给变量$key 。

于 2009-12-23T09:45:34.223 回答
1

用于$key => $val获取密钥:

<?php

$arr = array(
    1 => "Value1",
    2 => "Value2",
    10 => "Value10",
);

foreach ($arr as $key => $val) {
   print "$key\n";
}

?>
于 2009-12-23T09:46:27.240 回答
1
<?php
$names = array("firstname"=>"maurice",
               "lastname"=>"muteti", 
               "contact"=>"7844433339");

foreach ($names as $name => $value) {
    echo $name." ".$value."</br>";
}

print_r($names);
?>
于 2017-06-07T14:47:26.147 回答
0
 foreach($arr as $key=>$value){
    echo($key);    // key
 }
于 2009-12-23T09:44:57.047 回答
0

如果您使用嵌套foreach()函数,外部数组的键会一次又一次地打印,直到内部数组值结束。

<?php 

$myArray = ['key_1' => ['value_1', 'value12'],
            'key_2' => ['value_2', 'value22'], 
            'key_3' => ['value_3', 'value32']
           ];

$keysOfMyArray = array_key($myArray);

for ($x = 0; $x < count($myArray); $x++){
       print "\t".$keysOfMyArray[$x]."\t\t".implode("\t\t",$myArray[$keysOfMyArray[$x]]."\n");
}

?>
于 2019-04-27T08:06:57.257 回答