推荐用[],前提是php 5.4+;两者功能、性能、行为完全等价,区别仅在版本兼容性与代码风格:[]更简洁现代,是2026年主流事实标准,array()仅用于需兼容php 5.3及更早版本的遗留场景。
![php定义空数组用array()还是[]?性能对比与选择【解答】](https://img.php.cn/upload/article/001/503/042/178041020026034.jpeg?x-oss-process=image/resize,p_40)
PHP定义空数组,推荐用 [],前提是项目运行环境为 PHP 5.4 或更高版本——这在2026年已是普遍标准。两者功能完全等价,但[]更简洁、语义更直接、生态支持更好。
功能上没区别,都是真·空数组
无论写 $arr = array(); 还是 $arr = [];,PHP 最终创建的都是一个键值对为空、count() 为 0、is_array() 为 true 的标准数组。底层都调用同一套 C 函数初始化哈希表,运行时行为零差异。
- 都可以后续用
$arr[] = 'x';追加元素 - 都能被 foreach 遍历(无内容,自然不执行)
- json_encode() 输出都是
[] - 类型声明兼容:如
private array $data = [];(PHP ≥ 7.4)
性能差多少?基本可以忽略
[] 在词法解析阶段就生成数组结构,array() 需走语言结构调用流程,所以理论和实测都显示 [] 略快——但差距在纳秒级。百万次初始化,最多快 0.02 秒(PHP 8.2 环境)。实际业务中,这种差异远小于一次数据库查询或网络请求的开销。
- 不要为这点速度切换写法或重构旧代码
- 真正影响性能的是数组使用逻辑(比如嵌套循环查 key),不是怎么“生”出来的
- JIT 编译器不针对这两种语法做特别优化
什么时候必须用 array()?只剩一种情况
仅当项目需明确兼容 PHP 5.3 或更早版本 时,才必须用 array()。而 PHP 5.3 已于 2012 年停止支持,连安全补丁都不再提供。2026 年还坚持兼容它,通常意味着技术债过重,而非语法选择问题。
- 教学场景中可并列演示,帮助理解“函数式”历史脉络
- 老旧 CMS 或定制系统维护中若未升级 PHP,仍需沿用 array()
- 团队规范强制统一用 array() —— 属风格约定,非技术必需
为什么 [] 是现代 PHP 的事实标准
主流框架(Laravel、Symfony、Yii)、PSR 标准、PHPStan/PHP-CS-Fixer 默认配置,以及 VS Code、PhpStorm 等 IDE 的自动补全与类型推导,都优先适配 [] 语法。它更短、嵌套更清晰(如 ['users' => [['id' => 1]]]),也天然契合解构、展开、属性初始化等现代特性。
- PHP 7.4+ 类型化属性要求写
private array $list = [];,不接受array() - 静态分析工具对 [] 的类型推断更稳定
- 压缩工具(如 Composer 的编译优化)更倾向保留字面量形式
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











