php - 为什么在这种情况下引用数组元素不起作用?

标签 php arrays variables reference

此引用有效:

$awesome_array = array (1,2,3);
$cool_array = array (4,5,6);

$ref = &$awesome_array; // reference awesome_array
$awesome_array = $cool_array;
echo $ref; //produces (4,5,6) as expected

此引用也有效:

$array[0] = "original";
$element_reference = &$array[0]; // reference $array[0]
$array[0] = "modified";
echo $element_reference; // returns "modified" as expected.

但是当您更改整个数组时,引用数组中的元素将不起作用。你如何解决这个问题?

$array = array (1,2,3);
$new_array = array (4,5,6);

$element_reference = &$array[0]; // reference $array[0]
$array = $new_array; // CHANGE ENTIRE ARRAY
echo $element_reference; // returns 1 despite the fact that the entire array changed. I need it to return 4?

既然数组已经改变了,为什么它不返回4?如何引用该元素使其返回 4?

最佳答案

引用是对数组中的元素的引用,而不是对“名为 $array 的变量的索引”的引用。因此,没有任何引用(旧数组中的元素)适用于新数组。

原始引用仍然引用原始数组及其中的元素;即使原始数组不再可以立即访问。

要引用解析为数组的变量的特定索引,只需使用正常的索引操作:

$array = array (1,2,3);
$new_array = array (4,5,6);

$i = 0;
echo $array[$i];     // -> 1

$array = $new_array; // reassign variable with new array
echo $array[$i];     // -> 4

关于php - 为什么在这种情况下引用数组元素不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26437686/

相关文章:

php - $_GET 不起作用

php - symfony2 和 dotic2 中的 "unitOfWork"是什么东西

php - Symfony2 : Disconnect Associations on delete

java - 尝试运行鸡尾酒代码 java 时出现越界异常

C - 使用数组打印从 1 到 100 的所有素数

php - 如何在 codeigniter 中发出 sql 请求

Javascript : What is the best way to detect combination of two keys in array of an object

c - struct tab 中的 INT 需要 malloc 吗?

Java 如何从 ActionListener 类继承变量

c - C中变量声明错误