Php 简明教程
PHP - Call by Value
默认情况下,PHP 对传递给函数的参数使用“按值调用”机制。当一个函数被调用时,实际实参的值会被复制到函数定义的形式实参中。
在函数体执行期间,如果任何 formal arguments 的值发生任何变化,它不会反映在 actual arguments 中。
-
Actual Arguments −在函数调用中传递的参数。
-
Formal Arguments −在函数定义中声明的参数。
Example
让我们考虑以下代码中使用的函数−
<?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";
?>
它将生成以下 output −
My name is John
Initially the name is John
This function changes the name to John_new
My name is still John
在这个示例中, change_name() 函数将 _new 附加到它传入的字符串参数。然而,传入它的变量的值在函数执行之后仍然保持不变。
事实上,形式参数充当函数的局部变量。此类变量只可以在其初始化的范围内访问。对于函数而言,用花括号 "{ }" 标记的主体就是其范围。此范围内任何变量都不可用于其外部的代码。因此,任何局部变量的处理都不会影响外部的世界。
“按值调用”方法适合使用传给它的值来执行计算的函数。它执行某些计算并返回结果,无需改变传入它的参数的值。
Note − 执行公式类型计算的任何函数都是按值调用的示例。
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";
?>
它将生成以下 output −
Sum of the two numbers is : 30
Example
下面是通过按值传递参数来调用函数的另一个示例。该函数将接收到的数字增加 1,但这不会影响传入它的变量。
<?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";
?>
它将生成以下 output −
The initial value: 10
This function increments the number by 1 to 11
Number has not changed: 10
PHP 也支持在调用时将变量的引用传递给函数。我们将在下一章讨论它。