Để thêm vào câu trả lời khác.
$a = $b = $c = $d
thực sự có nghĩa là $a = ( $b = ( $c = $d ) )
PHP chuyển các kiểu nguyên thủy int, string, etc.theo giá trị và các đối tượng theo tham chiếu theo mặc định.
Điều đó có nghĩa là
$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
Tuy nhiên, bạn cũng CÓ THỂ chuyển các đối tượng theo giá trị bằng cách sử dụng từ khóa clone, nhưng bạn sẽ phải sử dụng dấu ngoặc đơn.
$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
NHƯNG, bạn KHÔNG THỂ chuyển các kiểu nguyên thủy bằng cách tham chiếu với từ khóa & bằng phương pháp này
$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.