PHP 函数参数

phpserver side programmingprogramming更新于 2025/7/18 18:37:17

简介

PHP 中的函数可以定义为以参数的形式接受来自调用环境/脚本的输入。这些参数以逗号分隔的列表形式放在函数名称前的括号内。请注意,调用函数时,必须传递相同数量的参数。

PHP 支持通过传递值、引用、具有默认值的参数以及传递可变数量的参数来调用函数。

带参数的函数

在以下示例中,一个函数被定义为具有两个正式参数。当通过传递值来调用此函数时,函数的参数将成为其局部变量。因此,函数内部参数值的任何变化都不会反映在函数外部。

此处,$x 的值在函数内部发生了变化,但如果我们在函数调用后检查其值,则它并没有改变。

示例

<?php
function add($x, $y){
   $x= $x+$y ;
   echo $x . "
"; } $x=10; $y=20; add($x,$y); //函数外部 $x 保留先前的值。 echo $x; ?>

输出

这将产生以下结果。−

30
10

将数组传递给函数

在以下示例中,add() 函数被定义为接收数组作为参数。在函数内部,使用 foreach 循环遍历数组元素

示例

<?php
function add($arr){
   $sum=0;
   foreach ($arr as $i){
      $sum+=$i;
   }
   echo "sum = " .$sum;
}
add(array(1,2,3));
?>

输出

这将产生以下结果。−

sum = 6

通过引用传递参数

值是通过值传递给函数的参数的。因此,函数内部对参数值的更改不会反映在函数外部。当通过引用传递参数时,更改会传递到函数外部的参数值。

为了通过引用接收值,参数名称必须以 $ 符号为前缀

示例

<?php
function swap(&$x, &$y){
   $t=$x;
   $x=$y;
   $y=$t;
   echo "inside function x=$x y=$y
"; } $x=5; $y=7; echo "before calling function x=$x y=$y
"; swap($x, $y); echo "after calling function x=$x y=$y
"; ?>

输出

这将产生以下结果。−

before calling function x=5 y=7
inside function x=7 y=5
after calling function x=7 y=5

变量 $x 和 $y 的值在 swap() 函数中互换。由于变量是通过引用传递的,因此变量在函数外部也会显示修改后的值。

类型提示(类型声明)

PHP 实际上是一门动态类型语言。因此,无需像 C/C++ 或 Java 那样声明变量的类型。但是,函数中参数的类型声明允许解析器检测传递给函数的错误数据类型。

语法

//定义一个带有类型提示的函数
function myfunction(type $arg1, type $arg2){
   ..
   ..
}

所有标准 PHP 数据类型,包括标量类型、数组、类/接口、可迭代对象和对象,都是在函数声明中提供类型提示的有效类型

示例

<?php
function add(...$numbers){
   $ttl=0;
   foreach ($numbers as $num){
      $ttl=$ttl+$num;
   }
   return $ttl;
}
$total=add(10,15,20);
echo "total= $total
"; echo "total=". add(1,2,3,4,5). "
"; ?>

输出

将产生以下结果。−

total= 45
total=15

也可以借助  func_get_args() 函数获取传递给函数的参数列表。我们可以运行 PHP 循环来遍历传递的参数列表中的每个值。在这种情况下,函数定义没有正式的参数。

示例

<?php
function add (int $x, int $y){
   $z=$x+$y;
   echo "addition=$z
"; } add(10,20); add(5.55, 6.66); ?>

输出

这将产生以下结果。−

addition=30
addition=11

请注意,在第二次调用 add() 函数时,虽然传入了浮点数作为参数,但仍然没有显示任何错误/警告。这是因为 PHP 在执行加法运算时,内部会将浮点数强制转换为整数。为了避免这种自动类型转换,请使用 declareconstruct 并设置 strict_types=1

示例

<?php
declare(strict_types=1);
function add (int $x, int $y){
   $z=$x+$y;
   echo "addition=$z
"; } add(10,20); add(5.55, 6.66); ?>

第二次调用 add() 函数现在将抛出异常 −

输出

addition=30
PHP Fatal error: Uncaught TypeError: Argument 1 passed to add() must be of the type integer, float given

相关文章