Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php是一个引用数组_Php_Arrays_Reference - Fatal编程技术网

php是一个引用数组

php是一个引用数组,php,arrays,reference,Php,Arrays,Reference,我有两个数组。其中一个将添加数组作为子数组,另一个将保留对要添加到第一个数组的数组的引用 $list=array(); $stack=array(); 在for循环中: $list[]=array('something'); $stack[]=& end($list); //errors: Only variables should be assigned by reference 我做错了什么?谢谢您的帮助。已编辑 $stack[] = &$list[count($lis

我有两个数组。其中一个将添加数组作为子数组,另一个将保留对要添加到第一个数组的数组的引用

$list=array();
$stack=array();
在for循环中:

$list[]=array('something');
$stack[]=& end($list); //errors: Only variables should be assigned by reference 

我做错了什么?谢谢您的帮助。

已编辑

$stack[] = &$list[count($list)-1];  //> Assuming numeric index incremental


在PHP5中,对象将始终通过引用传递

已编辑

但如果数组不是一个类,那么

$element = array();
$list[] = &$element;
$stack[] = &$element;

这样,引用的是$var,而不是结束($list)??正确的??我想要对end($list)的引用,这样它就不会在for循环外dispare。
&=
表示不同的含义。可能不是预期的。它仍然不会引用$list的最后一个元素,而是引用文档中的新变量$var.@Gedrox:“返回引用的函数和新运算符可以使用相同的语法”。问题是,在第一行中,引用丢失了。函数“end”返回数组中最后一个元素的副本。错误消息似乎不言自明。为什么要使用
新阵列
?只要
Array
就行了。@tomalak,对不起,那是个错误。对不起,我是php的初学者。数组也是如此??如果您使用PHP数组,则代码将被删除。当然,您需要将填充的数组传递到$element中。因此列表和堆栈都是对$element的引用数组??
$element = array();
$list[] = &$element;
$stack[] = &$element;