- 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 - 展开运算符
- PHP - 空值合并运算符
- PHP - 比较运算符
- 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 - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 文件处理
- PHP - 文件处理
- PHP - 打开文件
- PHP - 读取文件
- PHP - 写入文件
- PHP - 文件是否存在
- PHP - 下载文件
- PHP - 复制文件
- PHP - 追加文件
- PHP - 删除文件
- PHP - 处理 CSV 文件
- PHP - 文件权限
- PHP - 创建目录
- PHP - 列出文件
- 面向对象 PHP
- PHP - 面向对象编程
- PHP - 类和对象
- PHP - 构造函数和析构函数
- PHP - 访问修饰符
- PHP - 继承
- PHP - 类常量
- PHP - 抽象类
- PHP - 接口
- PHP - 特性
- PHP - 静态方法
- PHP - 静态属性
- PHP - 命名空间
- PHP - 对象迭代
- PHP - 封装
- PHP - Final 关键字
- PHP - 重载
- PHP - 克隆对象
- PHP - 匿名类
- PHP Web 开发
- PHP - Web 概念
- PHP - 表单处理
- PHP - 表单验证
- PHP - 表单邮件/URL
- PHP - 完整表单
- PHP - 文件包含
- PHP - GET 和 POST
- PHP - 文件上传
- PHP - Cookies
- PHP - 会话
- PHP - 会话选项
- PHP - 发送邮件
- PHP - 净化输入
- PHP - Post-Redirect-Get (PRG)
- PHP - 闪存消息
- PHP 高级
- PHP - MySQL
- PHP.INI 文件配置
- PHP - 数组解构
- PHP - 编码规范
- PHP - 正则表达式
- PHP - 错误处理
- PHP - Try…Catch
- PHP - Bug 调试
- PHP - 针对 C 开发人员
- PHP - 针对 PERL 开发人员
- PHP - 框架
- PHP - Core PHP 与框架
- PHP - 设计模式
- PHP - 过滤器
- PHP - JSON
- PHP - 异常
- PHP - 特殊类型
- PHP - 哈希
- PHP - 加密
- PHP - is_null() 函数
- PHP - 系统调用
- PHP - HTTP 认证
- PHP - 交换变量
- PHP - Closure::call()
- PHP - 过滤后的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 期望
- PHP - Use 语句
- PHP - 整数除法
- PHP - 已弃用的功能
- PHP - 已删除的扩展和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 进程
- PHP - PDO 扩展
- PHP - 内置函数
- PHP 有用资源
- PHP - 速查表
- PHP - 问答
- PHP - 快速指南
- PHP - 在线编译器
- 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
形式参数和实际参数
有时术语参数用于形参。实际上,这两个术语存在一定的差异。
参数指的是函数定义中使用的变量,而参数指的是调用函数时传递给函数的值。
参数可以是字面量、变量或表达式
函数定义中的参数也常称为形式参数,而传递的内容称为实际参数。
形式参数和实际参数的名称不必相同。实际参数的值按从左到右的顺序分配给相应的形式参数。
函数中定义的形式参数数量和传递的实际参数数量应该相同。
示例
当实际参数数量小于形式参数数量时,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