- 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 - 箭头( Arrow )函数
箭头( Arrow )函数是在 PHP 7.4 版本中引入的。箭头函数为编写匿名函数提供了一种更简单、更简洁的语法。在 PHP 7.4 中,引入了一个关键字 “fn” 来定义箭头函数,而不是传统的 “function” 关键字。
fn (argument_list) => expr
- “=>” 符号后面只有一个表达式,其值是箭头函数的返回值。
- 箭头函数没有显式的 return 语句。
- 与匿名函数一样,箭头函数被分配给一个变量以供调用。
例
以下示例演示了如何在 PHP 中使用箭头函数 -
<?php $add = fn ($a, $b) => $a + $b; $x = 10; $y = 20; echo " x: $x y: $y Addition: " . $add($x, $y); ?>
它将产生以下输出 -
x: 10 y: 20 Addition: 30
将 Arrow(箭头)函数用作回调函数
我们还可以将箭头函数用作回调函数。回调函数用作另一个函数的参数之一。箭头函数是动态执行的,“=>”后面的表达式的值成为父函数的参数,该函数可以是内置函数,也可以是用户定义的函数。
例
在这个例子中,我们在 usort() 函数中使用了一个箭头函数,这是一个 built_in 函数,它使用用户定义的比较函数按值对数组进行排序。
<?php $arr = [10,3,70,21,54]; usort ($arr, fn ($x , $y) => $x > $y); foreach ($arr as $x){ echo $x . "\n"; } ?>
它将产生以下输出 -
3
10
21
54
70
10
21
54
70
从父作用域中访问变量
箭头函数可以自动访问父作用域的变量。与匿名函数不同,“use” 关键字不需要充当闭包。在父作用域中定义表达式中使用的变量时,将按值隐式捕获该变量。
<?php $maxmarks=300; $percent=fn ($marks) => $marks*100/$maxmarks; $m = 250; echo "Marks = $m Percentage = ". $percent($m); ?>
它将产生以下输出 -
Marks = 250 Percentage = 83.333333333333
例
箭头函数会自动按值捕获变量,即使嵌套也是如此。
在下面的示例中,在另一个箭头函数的表达式部分定义了一个箭头函数。
<?php $z = 1; $fn = fn($x) => fn($y) => $x * $y + $z; $x = 5; $y = 10; echo "x:$x y:$y \n"; echo "Result of nested arrow functions: " . ($fn($x)($y)); ?>
它将产生以下输出 -
x:5 y:10
Result of nested arrow functions: 51
Result of nested arrow functions: 51
就像匿名函数一样,箭头函数语法允许任意函数签名,包括参数和返回类型、默认值、可变参数以及按引用传递和返回。