php 5.4正式引入数组短语法[],取代array();它降低解析开销、提升可读性与ide类型推导能力,并为php 7.1解构赋值、7.4箭头函数、8.1枚举等特性奠定语法一致性基础。

PHP 数组短语法的演进脉络
PHP 5.4 是数组短语法([])正式引入的版本,取代了沿用多年的 array() 写法。在此之前,PHP 4 和 5.3 及更早版本中,声明数组必须使用 array(1, 2, 3) 或 array('a' => 1) 形式。PHP 5.4 发布于 2012 年,这一语法变更被列为“语言增强”而非破坏性改动,旧写法仍完全兼容。
为什么短语法更快、更直观
短语法不是语法糖那么简单,它在底层解析阶段就减少了词法分析和语法树构建的开销。尤其在大量初始化场景(如配置数组、路由定义、测试数据)中,字符更少、视觉更紧凑:
- [] 比 array() 少 5 个字符,键名/值较多时差异明显:['host' => 'localhost', 'port' => 3306] vs array('host' => 'localhost', 'port' => 3306)
- 嵌套结构可读性显著提升:
[['id' => 1], ['id' => 2]]比array(array('id' => 1), array('id' => 2))更易定位层级 - 现代 IDE 和静态分析工具(如 PHPStan、Psalm)对 [] 的类型推导更成熟,配合 PHP 7.4+ 的数组类型声明(
array<int string></int>)协同效果更好
与后续语法特性的协同演进
短语法为 PHP 后续关键特性铺平了道路:
-
PHP 7.1 引入的方括号解构赋值(
[$a, $b] = $arr;)直接复用同一符号体系,语义统一 - PHP 7.4 的箭头函数和属性类型虽不直接依赖短数组,但整个语言向简洁、一致风格收敛,[] 成为“现代 PHP”的视觉锚点之一
-
PHP 8.1 的枚举(Enum)中,backed enum 的 cases 常配合短数组使用(如
return [self::Active, self::Inactive];),保持风格连贯
实际项目中的采用建议
除非需兼容 PHP []。团队协作中可借助工具确保一致性:
立即学习“PHP免费学习笔记(深入)”;
- PHP_CodeSniffer 规则
Squiz.Arrays.ArrayDeclaration可强制短语法 - PHP-CS-Fixer 配置
array_syntax选项设为'short',自动修复 - 新项目或重构时,不必批量替换旧代码,但新增和修改一律采用 [],自然过渡











