循环时操纵数组

时间:2015-05-15 15:13:45

标签: php arrays

所以$tr['tree']是一个数组。 $dic是存储为键值的数组。我想将密钥source添加到那些数组中。看起来下面的代码没有按预期工作,因为我猜$dic$tr['tree']中数组对象的新实例。

foreach($tr['tree'] as $dic){
    $dic['source'] = $tr['source']." > ".$dic['name'];
}

请注意,我来自python,这将是出色的工作。那我怎么用PHP做这个呢?

1 个答案:

答案 0 :(得分:4)

foreach()创建您循环的项目的副本,因此循环中的$dic与数组分离。如果要修改父数组,安全方法是使用:

foreach($array as $key => $value) {
   $array[$key] = $new_value;
}

您可以使用参考:

foreach($array as &$value) {
                  ^---
     $value = $new_value;
}

但这可能会导致以后难以发现的错误。在foreach终止后,$value将继续引用。如果您稍后重新使用该变量名称用于其他内容,则您将修改该数组,因为var仍指向它。