php 关系型数组赋值,php 对象和数组的赋值过程

$a = ['a'=>array('b'=>1)];

var_dump($a);

/$b = $a;

$b['a'] = 2;

var_dump($b);

var_dump($a);

两次输出的$a 一致 说明默认的赋值过程是深度拷贝调用

class A {

public $a = array('a'=>'2');

};

$a = new A();

var_dump($a);

$b = $a;

$b->a = 3;

var_dump($a);

var_dump($b);

输出:

object(A)#1 (1) {

["a"]=>

array(1) {

["a"]=>

string(1) "2"

}

}

object(A)#1 (1) {

["a"]=>

int(3)

}

object(A)#1 (1) {

["a"]=>

int(3)

}

可见对象默认的赋值并非深度拷贝 {

["a"]=>

array(1) {

["a"]=>

string(1) "2"

}

}

object(A)#1 (1) {

["a"]=>

int(3)

}

object(A)#1 (1) {

["a"]=>

int(3)

}。。浅拷贝

3 使用clone拷贝对象(深度拷贝 说明默认的对象__clone魔术方法实现)

class A {

public $a = array('a'=>'2');

};

$a = new A();

var_dump($a);

$b = clone $a;

$b->a = 3;

var_dump($a);

var_dump($b);

输出:

object(A)#1 (1) {   ["a"]=>   array(1) {     ["a"]=>     string(1) "2"   } } object(A)#1 (1) {   ["a"]=>   array(1) {     ["a"]=>     string(1) "2"   } } object(A)#2 (1) {   ["a"]=>   int(3) }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值