【问题标题】:Why does Referencing to Array Elements not work in this situation?为什么在这种情况下引用数组元素不起作用?
【发布时间】:2014-12-13 18:50:06
【问题描述】:

此引用有效:

$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?

【问题讨论】:

    标签: php arrays variables reference


    【解决方案1】:

    引用是数组中的一个元素,而不是是“一个名为$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
    

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 2017-11-26
      • 2010-12-29
      • 1970-01-01
      • 2021-08-05
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多