By default, PHP uses the “call by value” mechanism for passing arguments to a function. When a function is called, the values of actual arguments are copied to the formal arguments of the function’s definition.
During the execution of the function body, if there is any change in the value of any of the formal arguments, it is not reflected in the actual arguments.
-
Actual Arguments − The arguments that are passed in a function call.
-
Formal Arguments − The arguments that are declared in a function definition.
Example
Let us consider the function used in the code below −
<?php function change_name($nm) { echo "Initially the name is $nm n"; $nm = $nm."_new"; echo "This function changes the name to $nm n"; } $name = "John"; echo "My name is $name n"; change_name($name); echo "My name is still $name"; ?>
It will produce the following output −
My name is John Initially the name is John This function changes the name to John_new My name is still John
In this example, the change_name() function appends _new to the string argument passed to it. However, the value of the variable that was passed to it remains unchanged after the function’s execution.
Formal arguments, in fact, behave as local variables for the function. Such a variable is accessible only inside the scope in which it is initialized. For a function, its body marked by the curly brackets “{ }” is its scope. Any variable inside this scope is not available for the code outside it. Hence, manipulation of any local variable has no effect on the world outside.
The “call by value” method is suitable for a function that uses the values passed to it. It performs certain computation and returns the result without having to change the value of parameters passed to it.
Note − Any function that performs a formula-type computation is an example of call by value.
Example
Take a look at the following example −
<?php function addFunction($num1, $num2) { $sum = $num1 + $num2; return $sum; } $x = 10; $y = 20; $num = addFunction($x, $y); echo "Sum of the two numbers is : $num"; ?>
It will produce the following output −
Sum of the two numbers is : 30
Example
Here is another example of calling a function by passing the argument by value. The function increments the received number by 1, but that doesn’t affect the variable passed to it.
<?php function increment($num) { echo "The initial value: $num n"; $num++; echo "This function increments the number by 1 to $num n"; } $x = 10; increment($x); echo "Number has not changed: $x"; ?>
It will produce the following output −
The initial value: 10 This function increments the number by 1 to 11 Number has not changed: 10
PHP also supports passing the reference of variables to the function while calling. We shall discuss it in the next chapter.