先上两段代码
$a = $b = new stdClass();
$a->txt = '1111';
$b->txt = '2222';
echo $a->txt; // 输出2222
dump出来看,$a 就是 $b
$a = $b = ['txt' => 0];
$a['txt'] = '1111';
$b['txt'] = '2222';
echo $a['txt']; // 输出1111
dump出来看,$a 不是 $b
请问,如何解释这种现象?
先上两段代码
$a = $b = new stdClass();
$a->txt = '1111';
$b->txt = '2222';
echo $a->txt; // 输出2222
dump出来看,$a 就是 $b
$a = $b = ['txt' => 0];
$a['txt'] = '1111';
$b['txt'] = '2222';
echo $a['txt']; // 输出1111
dump出来看,$a 不是 $b
请问,如何解释这种现象?
//如果要让对象达到和数组一样的效果
$a = new stdClass();
$b = clone $a;
$a->txt = '1111';
$b->txt = '2222';
echo $a->txt; // 输出1111
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答578 阅读✓ 已解决
788 阅读
PHP对数组有特殊的
写时复制
机制,而对象是没有这个机制的。如果要让数组达到和对象一样的效果,可以使用引用完成。