Search code examples
phpvariablesvariable-assignment

Are multiple variable assignments done by value or reference?


$a = $b = 0;

In the above code, are both $a and $b assigned the value of 0, or is $a just referencing $b?


Solution

  • With raw types this is a copy.

    test.php

    $a = $b = 0;
    
    $b = 3; 
    
    var_dump($a);
    var_dump($b);
    

    Output:

    int(0) 
    int(3)
    

    With objects though, that is another story (PHP 5)

    test.php

    class Obj
    { 
        public $_name;
    }
    
    $a = $b = new Obj();
    
    $b->_name = 'steve';
    
    var_dump($a);
    var_dump($b);
    

    Output

    object(Obj)#1 (1) { ["_name"]=> string(5) "steve" } 
    object(Obj)#1 (1) { ["_name"]=> string(5) "steve" }