运行以下代码:
<?php
$a = array('yes');
$a[] = $a;
var_dump($a);
Run Code Online (Sandbox Code Playgroud)
出局:
array(2) {
[0]=>
string(3) "yes"
[1]=>
array(1) {
[0]=>
string(3) "yes"
}
}
Run Code Online (Sandbox Code Playgroud)
运行以下代码:
<?php
$a = array('no');
$b = &$a;
$a[] = $b;
$a = array('yes');
$a[] = $a;
var_dump($a);
Run Code Online (Sandbox Code Playgroud)
出局:
array(2) {
[0]=>
string(3) "yes"
[1]=>
array(2) {
[0]=>
string(3) "yes"
[1]=>
*RECURSION*
}
}
Run Code Online (Sandbox Code Playgroud)
我已经重新分配$ a的值,为什么有RECURSION循环引用?
要删除引用,您需要调用unset. 没有unsetafter$a = array('yes'); $a仍然与 with 绑定,$b并且它们仍然是引用。所以第二部分的行为与第一部分相同。
但请注意,数组内的引用存在潜在危险。对右侧的引用进行正常(非通过引用)赋值不会将左侧变成引用,但数组内的引用会保留在这些正常赋值中。
http://php.net/manual/en/language.references.whatdo.php
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |