PHP对象赋值

作者: tinyPhper | 来源:发表于2017-03-19 21:36 被阅读0次

PHP中传值赋值运算将变量的值拷贝到新的变量中,所以改变其中一个不会影响另外一个。普通的传值赋值行为中有个例外就是对象赋值。

class SimpleClass{

public $var='';

}

$instance=newSimpleClass();

$assigned=$instance;

$reference=&$instance;

$instance->var='$assigned will have this value';

$instance=null;// $instance and $reference become nullvar_dump($instance);

var_dump($reference);

var_dump($assigned);

输出:

NULL

NULL

object(SimpleClass)#1 (1) {["var"]=>string(30) "$assigned will have this value"}

分析代码:

$instance=newSimpleClass();//新建实例,$instance指向这个对象

$assigned=$instance;//$assigned也指向$instance所指向的对象

$reference=&$instance;//$reference指向$instance

如图:

$instance->var='$assigned will have this value';//给对象的var属性赋值

$instance = null;//$instance指向空,而$assigned还指向对象

参考:

https://www.zhihu.com/question/35710455

相关文章

  • PHP对象赋值

    PHP中传值赋值运算将变量的值拷贝到新的变量中,所以改变其中一个不会影响另外一个。普通的传值赋值行为中有个例外就是...

  • php5和7的对象赋值及zval粗谈

    今天看php发展历史,了解到在php4的年代,对象的赋值默认是创建副本,并非是增加对象的引用。就试了下在php5的...

  • 5.PHP入门-语法概述(五)运算符

    PHP 算数运算符 PHP 赋值运算符 PHP 赋值运算符用于向变量传值。PHP 中基础的赋值运算符是 "="。这...

  • PHP之剑走偏锋的DeepCopy

    php的深拷贝和浅拷贝问题,普通变量对象的赋值 = 是深拷贝,& 是浅拷贝。 输出结果: 类对象的拷贝问题就得看下...

  • lo.PHP 运算符

    ####PHP 算术运算符 PHP 赋值运算符 在 PHP 中,基本的赋值运算符是 "="。它意味着左操作数被设置...

  • php基础精粹

    PHP php数组 php数组之索引数组初始化 PHP数组之索引数组赋值 PHP数组之访问索引数组内容 PHP数组...

  • PHP 面向对象 (四)类对象赋值为引用传递

  • 解构赋值

    解构赋值 数组的解构赋值 嵌套,默认值,展开符 对象的解构赋值 对象解构赋值的本质与简写 对象解构的模式与变量 对...

  • C++中 对象的赋值与复制

    赋值与拷贝 1、可以从调用形式上,对“对象的赋值”和“对象的复制”进行区分: 对象的赋值:指的是调用了类的赋值运算...

  • 工作问题总结

    1、对象赋值问题(对象赋值影响原对象)直接用=的方式把一个对象赋值给另一个对象,会导致修改新对象时,原对象也发生变...

网友评论

    本文标题:PHP对象赋值

    本文链接:https://www.haomeiwen.com/subject/jsdvnttx.html