Php 简明教程

PHP - Call by Value

默认情况下,PHP 对传递给函数的参数使用“按值调用”机制。当一个函数被调用时,实际实参的值会被复制到函数定义的形式实参中。

在函数体执行期间,如果任何 formal arguments 的值发生任何变化,它不会反映在 actual arguments 中。

  1. Actual Arguments −在函数调用中传递的参数。

  2. 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 也支持在调用时将变量的引用传递给函数。我们将在下一章讨论它。