2009-12-23 91 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); 
?>