- PHP 菜鸟教程
- PHP - 教程
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 功能
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - echo 语句和 print 语句
- PHP - var_dump() 函数
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP – 数据类型
- PHP - 类型转换
- PHP - 类型戏法
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件和I/O
- PHP – 数学函数
- PHP - Heredoc & Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期和时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符类型
- PHP - 算术运算符示例
- PHP - 比较运算符示例
- PHP - 逻辑运算符示例
- PHP - 赋值运算符示例
- PHP – 字符串运算符
- PHP – 数组运算符
- PHP – 条件运算符示例
- PHP - Spread 运算符
- PHP - Null 合并运算符
- PHP - Spaceship 运算符
- PHP 控制语句
- PHP – 决策
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP – 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - do...While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 数组
- PHP - 数组
- PHP - 索引数组
- PHP - 关联数组
- PHP - 多维数组
- PHP - 数组函数
- PHP - 常量数组
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值调用
- PHP - 按引用调用
- PHP - 默认参数
- PHP - 命名参数
- PHP - 变量参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量范围
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头( Arrow )函数
- PHP - 变量处理函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS 变量
- PHP - $_SERVER 变量
- PHP - $_REQUEST 变量
- PHP - $_POST 变量
- PHP - $_GET 变量
- PHP - $_FILES 变量
- PHP - $_ENV 变量
- PHP - $_COOKIE 变量
- PHP - $_SESSION 变量
- PHP 文件处理
- PHP - 文件处理
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
Second number: 20
Addition: 30
First number: 100
Second number: 200
Addition: 300
形式参数和实际参数
有时,术语 argument 用于参数。其实,这两个术语有一定的区别。
- 参数是指函数定义中使用的变量,而参数是指调用时传递给函数的值。
- 参数可以是文本、变量或表达式
- 函数定义中的参数通常也称为 形式参数,传递的内容称为 实际参数。
- 形式参数和实际参数的名称不必相同。实际参数的值按从左到右的顺序分配给相应的形式参数。
- 函数中定义的形式参数的数量和传递的实际参数的数量应该相同。
例
当实际参数的数量少于形式参数的数量时,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
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";
}
# 实际参数是字符串
$x="10";
$y=20;
addition($x, $y);
?>
它将产生以下输出 -
First number: 10
Second number: 20
Addition: 30
Second number: 20
Addition: 30