我想在预处理时为数组添加一个值:
foreach ($array as $cell) {
if ($cell["type"] == "type_list") {
$cell["list"] = $anObject;
error_log(print_r($cell, TRUE), 0);
}
error_log(print_r($array, TRUE), 0);
第一个原理还可以,但是当我离开循环时,对象添加了消失,打印出数组。
我想这是一种正常的行为,解决这个“功能”的最佳方法是什么?
答案 0 :(得分:11)
答案 1 :(得分:4)
当您遍历数组时,$cell
是值的副本,而不是引用,因此更改它不会影响数组中的值。
您应该使用&
将$cell
作为参考:
foreach ($array as &$cell) {
if ($cell["type"] == "type_list") {
$cell["list"] = $anObject;
error_log(print_r($cell, TRUE), 0);
}
error_log(print_r($array, TRUE), 0);
或者使用索引直接访问数组项。
foreach ($array as $i => $cell) {
if ($array[$i]["type"] == "type_list") {
$array[$i]["list"] = $anObject;
error_log(print_r($array[$i], TRUE), 0);
}
error_log(print_r($array, TRUE), 0);