多个变量赋值是通过值还是按引用完成的?
2022-08-30 11:51:03
$a = $b = 0;
在上面的代码中,是否都分配了 的值,或者只是引用?$a
$b
0
$a
$b
$a = $b = 0;
在上面的代码中,是否都分配了 的值,或者只是引用?$a
$b
0
$a
$b
对于原始类型,这是一个副本。
测试.php
$a = $b = 0;
$b = 3;
var_dump($a);
var_dump($b);
输出:
int(0)
int(3)
对于对象,这是另一回事(PHP 5)
测试.php
class Obj
{
public $_name;
}
$a = $b = new Obj();
$b->_name = 'steve';
var_dump($a);
var_dump($b);
输出
object(Obj)#1 (1) { ["_name"]=> string(5) "steve" }
object(Obj)#1 (1) { ["_name"]=> string(5) "steve" }
将此代码视为:
$a = ($b = 0);
表达式不仅赋值给 ,而且还产生结果。该结果是赋值的正确部分,或者只是赋值给的值。$b = 0
0
$b
$b
因此,也会被分配。$a
0