PHP - 按值调用



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

在执行函数体期间,如果任何形式参数的值发生任何变化,都不会反映在实际参数中。

  • 实际参数 - 在函数调用中传递的参数。

  • 形式参数 - 在函数定义中声明的参数。

示例

让我们考虑一下下面代码中使用的函数:

<?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";
?>

它将产生以下输出

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 附加到传递给它的字符串参数。但是,传递给它的变量的值在函数执行后保持不变。

事实上,形式参数充当函数的局部变量。这样的变量只能在其初始化的作用域内访问。对于一个函数,其由花括号“{ }”标记的主体是其作用域。此作用域内的任何变量都无法被外部代码访问。因此,对任何局部变量的操作都不会影响外部环境。

“按值调用”方法适用于使用传递给它的值的函数。它执行某些计算并返回结果,而无需更改传递给它的参数的值。

注意 - 任何执行公式类型计算的函数都是按值调用的示例。

示例

请看下面的例子:

<?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";
?>    

它将产生以下输出

Sum of the two numbers is : 30  

示例

这是另一个通过按值传递参数来调用函数的示例。该函数将接收到的数字加 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";
?>

它将产生以下输出

The initial value: 10
This function increments the number by 1 to 11
Number has not changed: 10

PHP 还支持在调用函数时传递变量的引用。我们将在下一章讨论它。

广告