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转储。