PHP 函数参数
介绍
PHP 函数可以定义为接受来自调用环境/脚本的输入,这些输入以参数的形式给出。这些参数以逗号分隔的列表形式出现在函数名称前面的括号内。请注意,在调用函数时,必须传递相同数量的参数。
PHP 支持按值传递、按引用传递、传递具有默认值的参数以及传递可变数量的参数来调用函数。
带参数的函数
在下面的示例中,定义了一个带有两个形式参数的函数。当通过按值传递参数调用此函数时,函数的参数成为其局部变量。因此,在函数内部对参数值进行的任何更改都不会反映在其外部。
在这里,$x 的值在函数内部发生了更改,但是如果我们在调用函数后检查其值,它并没有改变。
示例
<?php
function add($x, $y){
$x= $x+$y ;
echo $x . "
";
}
$x=10;
$y=20;
add($x,$y);
//outside function $x has previous value.
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 中)。但是,函数中参数的类型声明允许解析器检测传递给函数的错误数据类型。
语法
//define a function with type hints
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 在内部将浮点数强制转换为整数以执行加法。为了防止这种自动类型转换,请使用 **declare** 结构和 **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
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP