2010-03-01 56 views
2

如何添加到每個子數組的末尾?這是一個例子。PHP - 添加到數組

$products = array( 
array(Code => 'TIR', 
    Description => 'Tires', 
    Price => 100 
), 
array(Code => 'OIL', 
    Description => 'Oil', 
    Price => 10 
), 
array(Code => 'SPK', 
    Description => 'Spark Plugs', 
    Price =>4 
) 
); 

我想要在每個數組中添加SKU => 1234。由於

回答

8

環路跨陣列和使用引用來修改它:使用reference(注意$val前的符號)在陣列上

foreach ($products as &$v) { 
    $v['SKU'] = 1234; 
} 
+1

刪除downvote因爲現在的代碼是固定的(最初V $不是一個參考) – Yacoby 2010-03-01 14:18:12

+2

有一件事要謹慎使用這種技術時:不要試圖重新使用$ V在第二循環(沒有先調用'unset($ v)'),否則你最終會遇到一些非常混亂的行爲 - 在這個例子中,你最終會覆蓋$ products [2]。爲了防止這種情況發生,我習慣於立即在完成循環之後'unset()'引用...以防萬一下面的任何代碼決定它要使用相同的變量名稱。 – 2010-03-01 15:42:12

2
foreach ($products as &$arr) 
    $arr['SKU'] = 1234; 
1

循環:

foreach ($products as &$val){ 
    $val['SKU'] = 1234; 
} 

那而不是$val是數組元素的副本,它是對該值的引用,因此改變它會更改$products中保存的值。

3
foreach ($products as $k=>$v){ 
    $v['SKU']=1234; 
    $products[$k]=$v; 
} 
print_r($products); 
+0

或者,可以用單獨一個替換循環內的行: '$產品[$ k]的[ 'SKU'] = 1234;' – 2010-03-01 15:38:58