Php 我能';我不理解下面给定代码的输出 输入: 输出: 无效的 无效的 对象(简单类)#1(1){ [“var”]=> 字符串(30)“$assigned将具有此值” }
链接:Php 我能';我不理解下面给定代码的输出 输入: 输出: 无效的 无效的 对象(简单类)#1(1){ [“var”]=> 字符串(30)“$assigned将具有此值” },php,Php,链接: 请给出足够的解释。为什么$assigned最终给出了该输出。实例不是对象,只是指向该对象的指针,因此assigned是独立的 Input: <?php $instance = new SimpleClass(); $assigned = $instance; $reference =& $instance; $instance->var = '$assigned will have this value'; $instance = null; // $
请给出足够的解释。为什么$assigned最终给出了该输出。实例不是对象,只是指向该对象的指针,因此assigned是独立的
Input:
<?php
$instance = new SimpleClass();
$assigned = $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance and $reference become null
var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
Output:
NULL
NULL
object(SimpleClass)#1 (1) {
["var"]=>
string(30) "$assigned will have this value"
}
如果您var_dump()
在$instance->var='$assigned'之后的所有三个变量都将具有此值'代码>,您将看到每个变量都有该值
引用指向实例,实例指向对象。将点指定给对象,与实例无关
希望这有帮助 也许会帮助您理解参考资料。
检查第一个示例,尤其是注释
您很容易理解,$reference和$instance是“绑定”在一起的,而$assigned不是
希望这有帮助。让我们从您认为它不应该显示的原因开始,我们可以尝试帮助您理解。因为$assigned
指向的内存块与$instance,$reference
指向的内存块不同。清洁一个街区不会清洁另一个街区。谢谢你的解释
$instance = new SimpleClass(); // instance points to instantiated object
$assigned = $instance; // assigned also points to same object
$reference =& $instance; // reference points to instance which points to object
$instance->var = '$assigned will have this value'; // all get set with this
$instance = null; // instance and reference no longer point to the object, assigned still does