如何循环访问关联数组并获取密钥?

我的关联数组:

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

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

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

我如何获得$arr的密钥?

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

你可以做:

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

如PHP文档中所述 。

如果你使用array_keys() ,PHP会给你一个只有键的数组:

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

或者,你可以这样做:

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

没有人回答正常循环? 有时我觉得它更可读,更喜欢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 */ 
 foreach($array as $k => $v) 

$ k是键,$ v是值

或者如果你只是需要使用数组键()

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

 foreach ($array as $key => $value) { echo "<p>$key = $value</p>"; } 

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

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

虽然可以说是不太清楚,这种方法快大约3.5倍(至less在我用来testing的框)

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

我可以想象,这是由于foreach复制整个数组之前,迭代它的事实。

使用$key => $val来获取密钥:

 <?php $arr = array( 1 => "Value1", 2 => "Value2", 10 => "Value10", ); foreach ($arr as $key => $val) { print "$key\n"; } ?> 
 <?php $names = array("firstname"=>"maurice", "lastname"=>"muteti", "contact"=>"7844433339"); foreach ($names as $name => $value) { echo $name." ".$value."</br>"; } print_r($names); ?> 

哦,我发现它在PHP手册 。

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

当前元素的键将被分配给每个循环上的variables$键

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