尝试将属性分配给数组

时间:2016-11-16 21:53:13

标签: php arrays

我有一个名为$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

如何迭代设置数组键/属性的值,为什么这不起作用?

1 个答案:

答案 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']);

参考:http://php.net/manual/en/control-structures.foreach.php