PHP 7.3 中匿名函数支持变量绑定(use)、高阶函数应用(如 usort)、参数及返回值类型声明。示例:$greet = function($name) { return "Hello, $name!"; }; $isAdult = function(int $age): bool { return $age >= 18; };

在 PHP 7.3 中,匿名函数(也叫闭包,Closure)使用非常灵活,语法简洁,支持变量绑定、类型声明和返回值类型提示等现代特性。下面从几个常用场景讲清楚怎么用。
基本写法与调用
匿名函数没有函数名,直接用 function() 定义,可赋值给变量或作为参数传入:
示例:
$greet = function($name) {
return "Hello, $name!";
};
echo $greet("Alice"); // 输出:Hello, Alice!
使用 use 绑定外部变量
匿名函数默认无法访问定义作用域外的变量,需用 use 显式导入。PHP 7.3 支持按值或引用传递(加 &):
立即学习“PHP免费学习笔记(深入)”;
- 按值绑定(默认):函数内修改不影响原变量
- 按引用绑定(
use (&$count)):可用于累加、计数等场景
示例:
$prefix = "Mr.";
$sayHi = function($name) use ($prefix) {
return "$prefix $name";
};
echo $sayHi("Smith"); // 输出:Mr. Smith
配合 array_map / usort / preg_replace_callback 等函数
这是匿名函数最实用的地方,避免为简单逻辑单独定义命名函数:
-
array_map:对数组每个元素做处理 -
usort:自定义排序规则(注意 PHP 7.3 要求回调返回整数) -
preg_replace_callback:正则匹配后动态生成替换内容
示例(usort):
$users = [['name' => 'Tom', 'age' => 25], ['name' => 'Lily', 'age' => 22]];
usort($users, function($a, $b) {
return $a['age'] <=> $b['age']; // PHP 7.3 支持太空船操作符
});
类型声明与返回类型提示(PHP 7.3 原生支持)
可在参数和返回值上加类型,提升可读性和运行时检查:
- 参数类型:如
function(int $id, string $name) - 返回类型:在括号后加
: bool、: array等 - 注意:启用严格模式(
declare(strict_types=1);)后类型会强制校验
示例:
$isAdult = function(int $age): bool {
return $age >= 18;
};
var_dump($isAdult(20)); // true



















