2010-03-01 69 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