PHP - 函数参数



PHP 中的函数可以定义为接受一个或多个参数。函数参数是在定义函数时,函数名称前面的括号内用逗号分隔的表达式列表。参数可以是任何标量类型(数字、字符串或布尔值)、数组、对象,甚至另一个函数。

function foo($arg_1, $arg_2, $arg_n) {
   statements;
   return $retval;
}

参数充当在函数体内部处理的变量。因此,它们遵循与任何普通变量相同的命名约定,即它们应该以“$”开头,并且可以包含字母、数字和下划线。

注意 - 对可以定义的参数数量没有限制。

当需要调用参数化函数时,您必须确保传递给它的值数量与函数定义中的参数数量相同。

foo(val1, val2, val_n);

使用参数定义的函数可以产生一个结果,该结果会根据传递的值动态变化。

示例

以下代码包含带有两个参数的 addition() 函数的定义,并显示这两个数的加法结果。运行时输出取决于传递给函数的两个值。

<?php
   function addition($first, $second) {
      $result = $first+$second;
      echo "First number: $first \n";
      echo "Second number: $second \n"; 
      echo "Addition: $result";
   }

   addition(10, 20);

   $x=100;
   $y=200;
   addition($x, $y);
?>

它将产生以下输出 -

First number: 10 
Second number: 20 
Addition: 30 
First number: 100 
Second number: 200 
Addition: 300

形式参数和实际参数

有时术语参数用于形参。实际上,这两个术语存在一定的差异。

  • 参数指的是函数定义中使用的变量,而参数指的是调用函数时传递给函数的值。

  • 参数可以是字面量、变量或表达式

  • 函数定义中的参数也常称为形式参数,而传递的内容称为实际参数

  • 形式参数和实际参数的名称不必相同。实际参数的值按从左到右的顺序分配给相应的形式参数。

  • 函数中定义的形式参数数量和传递的实际参数数量应该相同。

示例

当实际参数数量小于形式参数数量时,PHP 会引发ArgumentCountError。但是,如果实际参数数量多于形式参数数量,则会忽略额外的实际参数。

<?php
   function addition($first, $second) {
      $result = $first+$second;
      echo "First number: $first \n";
      echo "Second number: $second \n";
      echo "Addition: $result \n";
   }

   # Actual arguments more than formal arguments
   addition(10, 20, 30);

   # Actual arguments fewer than formal arguments
   $x=10;
   $y=20;
   addition($x);
?>

它将产生以下输出 -

First number: 10 
Second number: 20 
Addition: 30 
PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments
to function addition(), 1 passed in /home/cg/root/20048/main.php
on line 16 and exactly 2 expected in /home/cg/root/20048/main.php:2

参数类型不匹配

PHP 是一种动态类型语言,因此在将实际参数的值复制到形式参数时,它不会强制执行类型检查。但是,如果函数体内的任何语句尝试执行特定于不支持它的特定数据类型的操作,则 PHP 会引发异常。

在上面的 addition() 函数中,假设传递的是数字参数。如果传递字符串参数,PHP 不会有任何异议,但执行加法的语句会遇到异常,因为"+" 操作未针对字符串类型定义。

示例

请看以下示例 -

<?php
   function addition($first, $second) {
      $result = $first+$second;
      echo "First number: $first \n";
      echo "Second number: $second \n";
      echo "Addition: $result";
   }

   # Actual arguments are strings
   $x="Hello";
   $y="World";
   addition($x, $y);
?>

它将产生以下输出 -

PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string + string in hello.php:5

但是,PHP 是一种弱类型语言。它会尽可能尝试将变量转换为兼容的类型。因此,如果传递的值之一是数字的字符串表示形式,而第二个是数字变量,则 PHP 会将字符串变量转换为数字以执行加法运算。

示例

请看以下示例 -

<?php
   function addition($first, $second) {
      $result = $first+$second;
      echo "First number: $first \n";
      echo "Second number: $second \n";
      echo "Addition: $result";
   }

   # Actual arguments are strings
   $x="10";
   $y=20;
   addition($x, $y);
?>

它将产生以下输出 -

First number: 10 
Second number: 20 
Addition: 30
广告