PHP 8.3 中定义空数组最推荐用 [],如 $data = [];,需配合 array 类型声明以确保类型安全;array() 仅用于兼容旧版或特定规范场景。

PHP 8.3 中定义空数组最简洁、最推荐的写法就是用方括号 [],它比 array() 更轻量、更直观,且在所有支持 PHP 8.3 的环境中完全可用。
直接用 [] 创建空数组
这是当前主流项目中的首选方式,语法干净,语义明确:
-
$data = [];—— 创建一个空索引数组 -
$user = [];—— 后续可自由填充键值对,如$user['name'] = 'Tom'; - 配合类型声明使用更安全:
private array $items = [];(属性初始化)
什么时候还该用 array()
array() 并未过时,它仍有明确的适用场景:
- 维护跨版本兼容性(比如需支持 PHP 5.3 或更老环境)
- 团队规范要求显式表达“数组构造意图”,提升代码可读性
- 某些静态分析工具或老旧 IDE 对
[]的类型推导支持较弱(已属少数情况)
注意类型安全与初始化位置
在 PHP 8.3 中,仅写 [] 是不够严谨的——若用于类属性,必须配合类型声明;若用于函数参数或返回值,也应标注 array 类型:
立即学习“PHP免费学习笔记(深入)”;
- ✅ 正确:
private array $cache = []; - ✅ 正确:
function getItems(): array { return []; } - ❌ 不推荐:
private $cache = [];(缺少类型,PHP 8.3 静态分析会警告)
别混淆:[] 不是万能“泛型”占位符
有人误以为 Task[] 可直接声明对象数组类型,但 PHP 8.3 不支持这种原生语法:
- ❌
private Task[] $tasks;→ 解析错误 - ✅ 正确写法:
/** @var Task[] */ private array $tasks = []; - 也可用更严格的注解:
/** @var list<Task> */ private array $tasks = [];



















