Php 某些变量未通过引用传递
昨天我和我的一个朋友在静态课堂上走来走去;然后突然发生了一些奇怪的行为Php 某些变量未通过引用传递,php,Php,昨天我和我的一个朋友在静态课堂上走来走去;然后突然发生了一些奇怪的行为 <?php class NumberContainerO { public $_number; public function __construct($number) { $this->_number = $number; } } $list = array(); $n = new NumberContainerO(1); $list[] = &a
<?php
class NumberContainerO {
public $_number;
public function __construct($number) {
$this->_number = $number;
}
}
$list = array();
$n = new NumberContainerO(1);
$list[] = &$n->_number;
$n = new NumberContainerO(2);
$list[] = &$n->_number;
$n = new NumberContainerO(3);
$list[] = &$n->_number;
var_dump($list);
?>
<?php
class NumberContainer {
public static $_number;
public static function __Add($number) {
self::$_number = $number;
}
}
$list = array();
NumberContainer::__Add(1);
$list[] = &NumberContainer::$_number;
NumberContainer::__Add(2);
$list[] = &NumberContainer::$_number;
NumberContainer::__Add(3);
$list[] = &NumberContainer::$_number;
var_dump($list);
?>
输出
阵列(3){
[0]=>
int(1)
[1]=>
int(2)
[2]=>
&int(3)
}
阵列(3){
[0]=>
&int(3)
[1]=>
&int(3)
[2]=>
&int(3)
}
为什么int(1)和int(2)不通过引用传递
代码板:请参阅
当您执行
$n=newnumbercontainero(2)时
(并且$n=newnumbercontainero(3);
)您正在取消设置以前的$n->\u编号,从而销毁引用。然后数组元素就变成了标准的非引用值。@MichaelRushton有两个var转储。