Php 简明教程
PHP - Function Parameters
PHP 中的某个函数可能会被定义为接受一个或多个参数。在定义函数时,函数参数是函数名称前面圆括号内的表达式的逗号分隔列表。参数可以是任何标量类型(数字、字符串或布尔值)、数组、对象,甚至可以是另一个函数。
function foo($arg_1, $arg_2, $arg_n) {
statements;
return $retval;
}
在函数体中,参数作为要处理的变量。因此,它们遵循与任何普通变量相同的命名约定,即它们应以 “$” 开头,可以包含字母、数字和下划线。
Note −定义的参数数量没有限制。
当需要调用参数化的函数时,你必须确保传递给它的值与函数定义中的参数数量相同。
foo(val1, val2, val_n);
使用参数定义的函数可以产生根据传递的值动态改变的结果。
Example
以下代码包含一个带有两个参数的 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);
?>
它将生成以下 output −
First number: 10
Second number: 20
Addition: 30
First number: 100
Second number: 200
Addition: 300
Formal and Actual Arguments
有时, argument 一词被用来表示 parameter 。实际上,这两个术语之间存在一定的差异。
-
参数是指函数定义中使用的变量,而实参是指在调用时传递给函数的值。
-
实参可以是字面量、变量或表达式。
-
函数定义中的参数通常也称为 formal arguments ,而传递的内容称为 actual arguments 。
-
形式实参和实际实参的名称不必相同。实际实参的值会从左到右的顺序分配给相应的形式实参。
-
函数中定义的形式实参数量和传递的实际实参数量应相同。
Example
当实际实参数量少于形式实参数量时,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);
?>
它将生成以下 output −
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
Arguments Type Mismatch
PHP 是一种动态类型语言,因此它在使用实际实参的值复制形式实参时不强制进行类型检查。然而,如果函数体内的任何语句尝试对不支持特定数据类型执行特定操作,PHP 会引发异常。
在上面的 addition() 函数中,假定传递的是数值实参。如果传递字符串实参,PHP 不会有任何反对意见,但执行加法的语句会遇到异常,因为字符串类型未定义“+”运算。
Example
请看以下示例:
<?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);
?>
它将生成以下 output −
PHP Fatal error: Uncaught TypeError: Unsupported operand types: string + string in hello.php:5
但是,PHP 是一种弱类型语言。它会尝试尽可能将变量强制转换为兼容类型。因此,如果传递的值之一是数字的字符串表示,而第二个是数值变量,则 PHP 会将字符串变量强制转换为数值类型来执行加法运算。
Example
请看以下示例:
<?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);
?>
它将生成以下 output −
First number: 10
Second number: 20
Addition: 30