在PHP中插入关联多维数组的键值对

3

我有一个名为 $p_result 的多维数组,其中包含产品相关数据。现在我想使用 for each 或 for loop 将另一个键值元素(键为“o_id”,值为4)添加到其中,但是到目前为止我尝试过这样做:

foreach($p_result as $prod){
    $prod['o_id']=4;
}
print_r($p_result);

但它没有将 [oid]=>4 添加到每个数组中。print_r($p_result)未显示。

Array ( 
    [0] => Array ( [p_id] => 7 [quantity] => 122 [unitPrice] => 3 [subTotal] => 366 ) 
    [1] => Array ( [p_id] => 8 [quantity] => 133 [unitPrice] => 5 [subTotal] => 665 ) 
    )   
2个回答

2

使用 &$prod:

foreach($p_result as &$prod){
    $prod['o_id']=4;
}
print_r($p_result);

太棒了,请您详细说明这里使用 & 的用途? - Faisal Naseer
1
在循环中直接修改数组元素,需要在$value前加上&符号。这样的话,该值将被引用赋值。具体描述请参考:http://php.net/manual/zh/control-structures.foreach.php - Nick
1
还有非常有用的提示: “即使在foreach循环之后,$value的引用和最后一个数组元素仍然存在。建议使用unset()销毁它。” - Nick

2
你可以使用引用运算符&来实现你想要的操作:by reference
foreach($p_result as &$prod) {
    $prod['o_id']=4;
}

“引用运算符允许您访问父变量,因为实际上您是在引用原始变量。

偶尔使用引用可能会有问题,在这种情况下,另一个选项是:


foreach($p_result as $index => $prod) {
    $p_result[$index]['o_id']=4;
}

@FaisalNaseer - 它可以工作,但我需要看一下您正在使用/尝试帮助排除故障的代码。 - random_user_name

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接