推荐用[]定义空数组,因其更简洁、语义更直接,在PHP 5.4+中与array()完全等价;支持类型化属性、提升可读性、增强工具链兼容性,且现代项目基本无需考虑PHP 5.3兼容问题。
![php定义空数组为什么推荐用[]?代码简洁性大揭秘【解答】](https://img.php.cn/upload/article/001/503/042/178031180731906.png)
推荐用 [] 定义空数组,核心原因是它更简洁、语义更直接,且在现代 PHP(5.4+)中完全等价于 array(),没有功能或性能折损。
语法更轻量,写起来少打字
空数组是最高频的初始化场景之一。$arr = []; 比 $arr = array(); 少 5 个字符,去掉括号和函数名,视觉干扰更少。尤其在嵌套结构或类属性中优势明显:
-
多维初始化:
$data = ['users' => [], 'logs' => []]; -
类型化属性(PHP 7.4+):
private array $cache = [];—— 不能写成private array $cache = array();,语法不合法
语义更清晰,一眼看懂是“数组容器”
array() 是函数调用形式,容易让人误以为是在执行某种逻辑;而 [] 是原生语法符号,和字符串用 ""、布尔用 true 一样,属于语言基础字面量表达。比如:
-
'get' => []明确表示“键 get 对应一个空数组”,无需跳转理解函数含义 - 在配置数组、路由规则、表单验证规则等场景中,
[]让结构层次一目了然
现代工具链更友好,IDE 和静态分析支持更好
主流编辑器(VS Code、PhpStorm)、类型检查工具(PHPStan、Psalm)和代码格式化器(PHP-CS-Fixer)默认优先识别并建议 []。例如:
立即学习“PHP免费学习笔记(深入)”;
- PHPStan 在 strict 模式下对
array()不报错,但启用short_array_syntax规则后会提示改用[] - PHP-CS-Fixer 的
array_syntax修复器会自动把所有array()转为[](除非显式禁用) - 新项目启用 Laravel、Symfony 等框架时,其脚手架和文档全部采用
[]
兼容性不是问题,只要版本够新
PHP 5.4 发布已是十年前(2012年),当前主流环境最低要求基本是 PHP 7.4 或 8.x。若项目明确支持 PHP 5.4+,就无需保留 array() 作为兼容兜底。只有两类情况才需谨慎:
- 维护仍在运行 PHP 5.3 的极老旧系统(已不受官方支持)
- 开发跨版本通用的 Composer 包,且需向下兼容到 PHP 5.3(如今极少)



















