PHP8的箭头函数-PHP8知识详解

    时间: 浏览:1067次  原文出处:PHP服务网 
导读:PHP 7.4 引入了箭头函数(Arrow Functions),并在 PHP 8 中得到了进一步改进和扩展。 箭头函数是一种更简洁的匿名函数形式,它们提供了一种更便捷的方式来定义轻量级的、单行的回调函数。

PHP 7.4 引入了箭头函数(Arrow Functions),并在 PHP 8 中得到了进一步改进和扩展。

箭头函数是一种更简洁的匿名函数形式,它们提供了一种更便捷的方式来定义轻量级的、单行的回调函数

箭头函数的语法如下:

fn (参数列表) => 表达式

这里是一个示例:

<?php
$addition = fn ($a, $b) => $a + $b;
echo $addition(2, 3); 
?>

上面的代码定义了一个箭头函数 $addition,它接受两个参数 $a 和 $b,并返回它们的和。通过调用 $addition(2, 3),我们可以得到结果 5。

注意,箭头函数没有自己的作用域,它们继承父作用域的变量。这意味着,在箭头函数内部访问外部变量时,它会查找最近的包含该箭头函数的作用域。


下面再看一个使用箭头函数的示例:

<?php
$numbers = [1, 2, 3, 4, 5];
// 使用箭头函数计算每个数字的平方,并返回结果数组
$squares = array_map(fn($num) => $num ** 2, $numbers);
print_r($squares);
?>

以上代码在php8中运行结果是:

Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )

上述代码中,我们使用array_map()函数对数组中的每个元素进行平方操作,并通过箭头函数fn($num) => $num ** 2指定了这个转换过程。执行后,将打印出经过平方操作后的结果数组。

箭头函数与传统的匿名函数之间的区别包括:

1、箭头函数没有显式的 use 声明,它们自动捕获所需的变量。

2、箭头函数不能包含多条语句或复杂的控制结构,只能包含单个表达式。

3、箭头函数隐式返回其表达式的值,无需使用 return 关键字

需要注意的是,箭头函数不会创建新的作用域,因此无法访问外部的变量或常量。如果需要在箭头函数中使用外部变量或常量,需要使用 use 关键字将其引入。

我们看看下面代码:

<?php
$message = 'Hello';  
$greet = fn($name) => echo $message . ', ' . $name;  
$greet('John'); 
?>

在PHP8中运行的结果为:

Parse error: syntax error, unexpected token "echo" in D:\phpenv\www\localhost\test.php on line 3

错误在于箭头函数无法访问外部变量 $message。

在 PHP 8 中,箭头函数的作用域是词法作用域。它们不能像匿名函数那样访问外部变量,而是只能访问自己内部的变量。

要修复这个问题,您可以将变量 $message 作为参数传递给箭头函数,或者使用闭包来实现:

<?php
$message = 'Hello';
$greet = function ($message) {
    return fn($name) => $message . ', ' . $name;
};
echo $greet('John')('Doe');
?>

上面代码在PHP8中的运行结果为:

John, Doe


本文地址:https://www.olzz.com/php8dejiantouhanshu.html
码字不易,打个赏呗
杨泽业感谢你的支持!

猜你喜欢

PHP8的静态变量和方法-PHP8知识详解

导读:我们在上一课程讲到了public、private、protected这3个关键字,今天我们来讲解static关键字,明天再讲解final关键字。 如果不想通过创建对象来调用变量或方法,则可以将该变量或方法创建为静态变量或方法,也就是在变量或方法的前面加上static关键词。

2023-09-28  分类:PHP学堂  浏览:901次


PHP8中伪变量“$this->”和操作符“::”的使用-PHP8知识详解

导读:对象不仅可以调用自己的变量和方法,也可以调用类中的变量和方法。php8通过伪变量“$this->”和操作符“::”来实现这些功能。

2023-09-24  分类:PHP学堂  浏览:932次


PHP8的类与对象的基本操作之成员变量-PHP8知识详解

导读:成员变量是指在类中定义的变量。在类中可以声明多个变量,所以对象中可以存在多个成员变量,每个变量将存储不同的对象属性信息。

2023-09-21  分类:PHP学堂  浏览:899次


PHP8内置函数中的变量函数-PHP8知识详解

导读:今天学习的变量函数中,着重讲解了5个,分别是:检测变量是否为空的函数empty()、判断变量是否定义过的函数isset()、销毁指定的变量的函数unset()、获取变量的类型的函数gettype()、检查变量是否为数字或数字字符串的函数is_numeric()。

2023-09-02  分类:PHP学堂  浏览:1028次


PHP8的箭头函数-PHP8知识详解

导读:PHP 7.4 引入了箭头函数(Arrow Functions),并在 PHP 8 中得到了进一步改进和扩展。 箭头函数是一种更简洁的匿名函数形式,它们提供了一种更便捷的方式来定义轻量级的、单行的回调函数。

2023-08-27  分类:PHP学堂  浏览:1068次


PHP8的匿名函数-PHP8知识详解

导读:PHP8引入了匿名函数(AnonymousFunctions),它是一种创建短生命周期的函数,不需要命名,并且可以在其作用域内直接使用。以下是在PHP8中使用匿名函数的知识要点。

2023-08-27  分类:PHP学堂  浏览:886次


变量函数及销毁函数中的变量-PHP8知识详解

导读:今天分享PHP8知识详解中的变量函数及销毁函数中的变量,以及相应的示例代码。

2023-08-26  分类:PHP学堂  浏览:937次


正则表达式在PHP8中的应用案例-PHP8知识详解

导读:正则表达式在PHP8中有许多应用案例。以下是一些常见的应用场景:如数据验证、数据提取、数据替换、URL路由、文本搜索和过滤等。

2023-08-20  分类:PHP学堂  浏览:830次


Perl兼容正则表达式函数-PHP8知识详解

导读:本文学习的是在PHP8中,Perl兼容正则表达式函数,主要讲到了使用正则表达式对字符串进行匹配、使用正则表达式替换字符串的字串和使用正则表达式切分字符串。

2023-08-20  分类:PHP学堂  浏览:911次


PHP8的正则表达式-PHP8知识详解

导读:你正在站长在线学习PHP8的知识,本文学习的是正则表达式。主要内容有:行定位符、元字符、限定符、方括号、连字符、选择字符、转义字符、分组。

2023-08-19  分类:PHP学堂  浏览:862次