Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

php

(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 also i want to know that do you mean by $$ sign in php

For example:-

$a = 'name';
$$a = "Paul";
echo $name; 

output is Paul

As above example what do u mean by $$ on PHP.

like image 484
poter Avatar asked Jun 20 '11 04:06

poter


People also ask

What are the differences between call by value and call by reference?

In the Call by Value method, there is no modification in the original value. In the Call by Reference method, there is a modification in the original value. In the case of Call by Value, when we pass the value of the parameter during the calling of the function, it copies them to the function's actual local argument.

What is call by value and call by reference in PHP with example?

PHP allows you to call function by value and reference both. In case of PHP call by value, actual value is not modified if it is modified inside the function. Let's understand the concept of call by value by the help of examples.

What is the difference between pass by value and pass by reference in PHP?

The main difference between pass by value and pass by reference is that, in a pass by value, the parameter value copies to another variable while, in a pass by reference, the actual parameter passes to the function.

What is PHP call reference?

In case of PHP call by reference, actual value is modified if it is modified inside the function. In such case, you need to use & (ampersand) symbol with formal arguments. The & represents reference of the variable. Let's understand the concept of call by reference by the help of examples.


2 Answers

$$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).

like image 114
Amber Avatar answered Sep 28 '22 01:09

Amber


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.

like image 37
Yasser Souri Avatar answered Sep 28 '22 00:09

Yasser Souri