difference between call by value and call by reference in php and also $$ means?

后端 未结 5 1177
说谎
说谎 2021-01-05 07:00

(1) I want to know what is the difference between call by value and call by reference in php. PHP works on call by value or call by reference?

(2) And a

相关标签:
5条回答
  • 2021-01-05 07:44

    Call by value means passing the value directly to a function. The called function uses the value in a local variable; any changes to it do not affect the source variable.

    Call by reference means passing the address of a variable where the actual value is stored. The called function uses the value stored in the passed address; any changes to it do affect the source variable.

    0 讨论(0)
  • 2021-01-05 07:54

    $$a = b; in PHP means "take the value of $a, and set the variable whose name is that value to equal b".

    In other words:

    $foo = "bar";
    $$foo = "baz";
    echo $bar; // outputs 'baz'
    

    But yeah, take a look at the PHP symbol reference.

    As for call by value/reference - the primary difference between the two is whether or not you're able to modify the original items that were used to call the function. See:

    function increment_value($y) {
        $y++;
        echo $y;
    }
    
    function increment_reference(&$y) {
        $y++;
        echo $y;
    }
    
    $x = 1;
    increment_value($x); // prints '2'
    echo $x; // prints '1'
    increment_reference($x); // prints '2'
    echo $x; // prints '2'
    

    Notice how the value of $x isn't changed by increment_value(), but is changed by increment_reference().

    As demonstrated here, whether call-by-value or call-by-reference is used depends on the definition of the function being called; the default when declaring your own functions is call-by-value (but you can specify call-by-reference via the & sigil).

    0 讨论(0)
  • 2021-01-05 07:56

    Let's define a function:

    function f($a) {
      $a++;
      echo "inside function: " . $a;
    }
    

    Now let's try calling it by value(normally we do this):

    $x = 1;
    f($x);
    echo "outside function: " . $x;
    
    //inside function: 2
    //outside function: 1
    

    Now let's re-define the function to pass variable by reference:

    function f(&$a) {
      $a++;
      echo "inside function: " . $a;
    }
    

    and calling it again.

    $x = 1;
    f($x);
    echo "outside function: " . $x;
    
    //inside function: 2
    //outside function: 2
    

    You can pass a variable by reference to a function so the function can modify the variable. More info here.

    0 讨论(0)
  • 2021-01-05 07:56

    Call by value: Passing the variable value directly and it will not affect any global variable.

    Call by reference: Passing the address of a variable and it will affect the variable.

    0 讨论(0)
  • 2021-01-05 08:07

    It means $($a), so its the same as $name (Since $a = 'name'). More explanation here What does $$ (dollar dollar or double dollar) mean in PHP?

    0 讨论(0)
提交回复
热议问题