parent
2287695b44
commit
c7d4b562c0
3 changed files with 79 additions and 1 deletions
@ -0,0 +1,29 @@ |
|||||||
|
--TEST-- |
||||||
|
array reference assignment: append and element assignment write back through reference |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
function main() |
||||||
|
{ |
||||||
|
$arr1 = [1, 2, 3]; |
||||||
|
$arr2 = [&$arr1[0]]; |
||||||
|
$arr2[0] = 123; |
||||||
|
$arr2[] = &$arr1[1]; |
||||||
|
$arr2[1] = 456; |
||||||
|
var_dump($arr1, $arr2); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
array(3) { |
||||||
|
[0]=> |
||||||
|
&int(123) |
||||||
|
[1]=> |
||||||
|
&int(456) |
||||||
|
[2]=> |
||||||
|
int(3) |
||||||
|
} |
||||||
|
array(2) { |
||||||
|
[0]=> |
||||||
|
&int(123) |
||||||
|
[1]=> |
||||||
|
&int(456) |
||||||
|
} |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
--TEST-- |
||||||
|
array reference assignment to element: $arr[$k] = &$v writes back through reference |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
function main() |
||||||
|
{ |
||||||
|
$x = 10; |
||||||
|
$y = 20; |
||||||
|
$arr = [1, 2, 3]; |
||||||
|
$arr[0] = &$x; // 覆盖已有元素为引用 |
||||||
|
$arr[5] = &$y; // 新建元素为引用 |
||||||
|
$x = 100; |
||||||
|
$y = 200; |
||||||
|
var_dump($arr[0], $arr[5]); // 100, 200 |
||||||
|
|
||||||
|
// 通过元素引用写回 |
||||||
|
$arr[0] = 111; |
||||||
|
$arr[5] = 222; |
||||||
|
var_dump($x, $y); // 111, 222 |
||||||
|
|
||||||
|
// 嵌套:引用赋值到多维数组元素 |
||||||
|
$z = 7; |
||||||
|
$m = [[1], [2]]; |
||||||
|
$m[0][0] = &$z; |
||||||
|
$z = 77; |
||||||
|
var_dump($m[0][0]); // 77 |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
int(100) |
||||||
|
int(200) |
||||||
|
int(111) |
||||||
|
int(222) |
||||||
|
int(77) |
||||||
Loading…
Reference in new issue