我希望能够做到以下几点:
$normal_array = array();
$array_of_arrayrefs = array( &$normal_array );
// Here I want to access the $normal_array reference **as a reference**,
// but that doesn't work obviously. How to do it?
end( $array_of_arrayrefs )["one"] = 1; // choking on this one
print $normal_array["one"]; // should output 1
发布于 2018-07-30 09:51:18
这里有几种方法。
<?php
$normal_array = array();
$array_of_arrayrefs = array( "blah", &$normal_array );
foreach ($array_of_arrayrefs as &$v);
$v["one"] = 1;
echo $normal_array["one"]; //prints 1
?>
<?php
$normal_array = array();
$array_of_arrayrefs = array( "blah", &$normal_array );
$lastIndex = @end(array_keys($array_of_arrayrefs)); //raises E_STRICT because end() expects referable.
$array_of_arrayrefs[$lastIndex]["one"] = 1;
echo $normal_array["one"]; //prints 1
?>
发布于 2018-07-30 10:13:05
你不应该首先通过引用传递。这通常被认为是不好的做法,因为它很难看出状态被修改的地方。
这是一个非常常见的误解,即引用速度更快,事实并非如此。 事实上,它们有点慢。PHP有一个名为copy-on-write的系统,这意味着在写入变量之前,实际上并没有复制变量。
唯一真正需要引用的地方是PHP4,否则会克隆对象。PHP5中不需要这样做。
https://stackoverflow.com/questions/-100000445
复制相似问题