2009-12-23 51 views
111

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

$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 
} 
+3

顺便说一句,你错过了逗号。 – 2009-12-23 10:02:50

+1

最后一个逗号是可选的吗? – 2014-03-08 15:42:37

回答

233

你可以这样做:

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

PHP docs中所述。

+2

@codaddict,“foreach”的顺序是否保证与声明中的顺序相同? – Pacerier 2015-03-27 08:47:15

53

如果使用array_keys(),PHP会给你充满只是键的数组:

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

或者,你可以这样做:

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

在第一个解决方案中,我的IDE(Netbeans)没有提供$ value变量未使用的警告,所以这里是+ 1 – 2012-12-26 12:41:06

+2

哪个更快? – 2013-04-12 20:31:19

+0

@TrevorJohns,订单是否有保证? – Pacerier 2015-04-03 18:39:07

4

下面将让你同时获得关键和价值。

foreach ($arr as $key => $value) 
{ 
    echo($key); 
} 
10
foreach($array as $k => $v) 

其中$ k是关键和$ v是价值

或者,如果你只需要按键使用array_keys()

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

哦,我发现它在PHP manual

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

当前元素的键将被分配到每个循环的变量$关键

1

使用$key => $val领取钥匙:

<?php 

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

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

?> 
3

虽然可以说是不太清楚这个方法是由大约3.5大约一个因素更快(至少在包装盒上我用来测试)

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

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

7

我用下面的循环来得到一个关联数组

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

唯一能够清楚简洁地描述如何在循环中使用键和值的答案! – SharpC 2017-09-21 19:42:25

19

没人接定期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 
*/ 
+1

在某些情况下,由于无法解释的原因,foreach会出现问题。很好总是有至少两种方式来做事情。 – liljoshu 2017-04-19 20:45:11

+1

当涉及到电脑时,没有“无法解释的”原因。 – JDrake 2017-11-21 10:02:14

+1

当您想要将两个后续数组项组合在一起时也很有用。 i + = 2,然后使用$ array [$ keys [$ i]]。“_”。$ array [$ keys [$ i + 1]] 只要告诉其他人有这个问题 – 2018-01-12 10:49:28

1
<?php 
$names = array("firstname"=>"maurice", 
       "lastname"=>"muteti", 
       "contact"=>"7844433339"); 

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

print_r($names); 
?>