echo '--------------------------------------';
$a = new \StdClass();
$a->a = '1';
$a->b = '2';
$b = $a;
unset($b->a);
print_r($a);
echo '++++++++';
print_r($b);
echo '--------------------------------------';
exit;
虽然用$b = $a 吧$a 赋值给了$b
但是如果 unset($b)中的内容,$a 的内容也会被改变? 如何正确的赋值才能不改变呢
1
hoythan OP 应该类似于 js 的深拷贝和浅拷贝
|
2
hoythan OP 找到办法了
用 clone 可以深拷贝 |
3
xzem 2017-07-11 16:56:48 +08:00 via Android
clone 好像只能管一层
|
4
mandex 2017-07-11 17:18:48 +08:00
如果只要属性不要方法的话可以用序列化或者转成 json
$b = json_decode(json_encode($a)); |
5
mandex 2017-07-11 17:21:16 +08:00
$b = unserialize(serialize($a));//序列化然后反序列化
|
6
gouchaoer 2017-07-11 17:22:54 +08:00 via Android
php 节点被刷屏了
|
7
baiyi 2017-07-11 17:23:09 +08:00
多看文档
在 PHP 5,一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。 |
8
baiyi 2017-07-11 17:23:38 +08:00
|