PHP中的数组引用混淆

som*_*som 5 php

$arr = array(1);
$a = & $arr[0];

$arr2 = $arr;
$arr2[0]++;

echo $arr[0],$arr2[0];

// Output 2,2
Run Code Online (Sandbox Code Playgroud)

你能帮我一下,怎么可能?

xda*_*azz 7

但请注意,数组内部的引用可能存在危险.使用右侧的引用执行正常(非引用)赋值不会将左侧转换为引用,但是在这些正常赋值中保留数组内的引用.这也适用于通过值传递数组的函数调用.

/* Assignment of array variables */
$arr = array(1);
$a =& $arr[0]; //$a and $arr[0] are in the same reference set
$arr2 = $arr; //not an assignment-by-reference!
$arr2[0]++;
/* $a == 2, $arr == array(2) */
/* The contents of $arr are changed even though it's not a reference! */
Run Code Online (Sandbox Code Playgroud)