我有一个名为$my_array
的数组。
我创建了这样的$ my_array:
$my_array = [];
$my_array[0] = [];
$my_array[1] = [];
$my_array[2] = [];
$my_array[3] = [];
$my_array
的每个元素都是一个数组:
foreach ($my_array as $array){
print(gettype($array));
print(" /// ");
}
输出:array /// array /// array /// array ///
foreach ($my_array as $array){
$array['link_root'] = "a string";
print($array['link_root']);
print(" ///// ");
}
输出为:a string ///// a string ///// a string ///// a string /////
然后当我尝试:
print($my_array[0]['link_root'])
我得到:PHP error: Undefined index: link_root
如何迭代设置数组键/属性的值,为什么这不起作用?
答案 0 :(得分:3)
foreach
控件结构默认情况下不会将值传递reference。
如果您希望能够在内部修改数组,则需要使用&
表示您希望将其作为参考传递,如下所示:
foreach ($myArray as &$array) {
$array['link_root'] = "a string";
}
print($myArray[0]['link_root']);
差异很微妙。另一种方法是传递索引并直接引用它,如:
foreach ($myArray as $index => $array) {
$myArray[$index]['link_root'] = "a string";
}
print($myArray[0]['link_root']);