PHP 5.4+ 支持[]和array()两种空数组写法,功能、行为、兼容性完全等价;区别仅在版本兼容性:[]仅PHP 5.4+可用,array()兼容PHP 4起所有版本。

PHP 5.4+ 支持两种空数组写法:[] 和 array()
从 PHP 5.4 开始,[] 成为官方认可的短数组语法,与传统的 array() 完全等价。两者都生成标准的 array 类型变量,内部结构、行为、函数兼容性(如 empty()、count()、array_push())完全一致。没有运行时差异,也没有类型隐式转换风险。
版本兼容性是核心区别
关键不在“能不能用”,而在“能不能跑”:
- array():自 PHP 4 起支持,可安全用于所有环境,包括已停更但仍在运行的 PHP 5.2/5.3 旧系统
-
[]:仅 PHP 5.4 及以上版本解析合法;若在 PHP 5.3 或更低版本中使用,会直接报
Parse error: syntax error - 注意:PHP 官方已于 2014 年终止对 PHP 5.3 的支持,2021 年终止 PHP 7.4,当前主流生产环境普遍为 PHP 8.0+,[] 已成为事实标准
代码风格与工程实践建议
语法功能相同,但团队协作中需关注一致性与可维护性:
- 新项目或升级至 PHP 7.4+ 的项目,应统一采用 [] —— 更紧凑、嵌套可读性高、IDE 类型推导更准
- 遗留系统维护或需明确支持 PHP 5.3 的场景(如某些嵌入式设备或定制 CMS),必须使用 array()
- 避免混用:同一文件或组件内交替出现
$a = [];和$b = array();会降低代码整洁度,静态分析工具(如 PHPStan)可能发出风格警告 - 字符串键名建议加单引号:
['name' => 'Tom', 'age' => 25],避免解析歧义和 IDE 提示干扰
常见误区澄清
有些写法看似“空”,实则不符合预期:
立即学习“PHP免费学习笔记(深入)”;
-
$arr = null;→ 变量类型是null,不是数组,调用count($arr)会触发 warning -
$arr = "";→ 类型是 string,非数组,is_array($arr)返回 false -
$arr = array(null);或$arr = [""];→ 这些是含一个元素的数组,count($arr) === 1,不是空数组 - 空数组不等于未定义:
isset($arr)在$arr = [];后返回 true,而未声明变量则为 false



















