2012-11-11 185 views
-1

我想問的問題只是出於好奇。爲什麼沒有此代碼的工作:使用foreach循環訪問PHP數組

$table = [ 
    'key1' => 'value1', 
    'key2' => 'value2', 
]; 

foreach($table as $tb) 
{ 
    $tb = strtoupper($tb); 
} 

print_r($table); 
+3

你期望什麼?錯誤是您的期望和實際結果之間的差異。只要你不期望任何事情,代碼就可以工作。 – Oswald

+0

哇,我的錯誤,它在代碼中是foreach($ table爲$ tb),只是複製粘貼問題。 – user1615069

+0

不是很明顯你還沒有定義$ tbl。 – h0lyalg0rithm

回答

4

我相信你期待值上成爲case..In你需要的foreach &這種情況下..

$table = [ 
    'key1' => 'value1', 
    'key2' => 'value2', 
]; 

foreach($table as &$tb) 
{ 
    $tb = strtoupper($tb); 
} 

print_r($table); 
+0

是的,確實如此。但爲什麼這樣呢?我發佈的代碼中發生了什麼?它肯定會改變循環中的數組值。它是否在循環關閉時刪除它們? – user1615069

+1

'&'意味着你引用了一個變量,所以在這樣的變量上做的動作將反映回原來的 –

+0

以及@Koen ... thnx .. –

1

您可以使用array_map

$table = [ 
    'key1' => 'value1', 
    'key2' => 'value2', 
]; 

$table = array_map("strtoupper", $table); 
print_r($table); 

如果你也有什麼改變鍵爲大寫使用array_change_key_case

print_r(array_change_key_case($table, CASE_UPPER)); 
+0

有趣,謝謝。 – user1615069

+0

不客氣 – Baba