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