如何在PHP中一次性为多个变量赋相同的值?
我有类似以下代码:
$var_a = 'A';
$var_b = 'A';
$same_var = 'A';
$var_d = 'A';
$some_var ='A';
在我的情况下,我无法将所有变量重命名为相同的名称(那样会使事情更容易),那么有没有更紧凑的方式将相同的值分配给所有变量?
如何在PHP中一次性为多个变量赋相同的值?
我有类似以下代码:
$var_a = 'A';
$var_b = 'A';
$same_var = 'A';
$var_d = 'A';
$some_var ='A';
在我的情况下,我无法将所有变量重命名为相同的名称(那样会使事情更容易),那么有没有更紧凑的方式将相同的值分配给所有变量?
$var_a = $var_b = $same_var = $var_d = $some_var = 'A';
补充其他回答。
$a = $b = $c = $d
实际上意味着 $a = ( $b = ( $c = $d ) )
PHP默认按值传递基本类型,例如int、string等
,按引用传递对象。
这意味着
$c = 1234;
$a = $b = $c;
$c = 5678;
//$a and $b = 1234; $c = 5678;
$c = new Object();
$c->property = 1234;
$a = $b = $c;
$c->property = 5678;
// $a,b,c->property = 5678 because they are all referenced to same variable
然而,您也可以使用关键字 clone
传递对象的值,但是您需要使用括号。
$c = new Object();
$c->property = 1234;
$a = clone ($b = clone $c);
$c->property = 5678;
// $a,b->property = 1234; c->property = 5678 because they are cloned
但是,你不能使用这种方法通过引用关键字&
来传递原始类型。
$c = 1234;
$a = $b = &$c; // no syntax error
// $a is passed by value. $b is passed by reference of $c
$a = &$b = &$c; // syntax error
$a = &($b = &$c); // $b = &$c is okay.
// but $a = &(...) is error because you can not pass by reference on value (you need variable)
// You will have to do manually
$b = &$c;
$a = &$b;
etc.
$var_a = $var_b = ... = new Class();
时,所有变量都将引用同一个Class
实例。 - user142162