php定义空数组的主流方式只有两种:[](自php 5.4起推荐)和array()(全版本兼容);new array()等写法根本不存在,属常见误解。
![php定义空数组的3种主流方式:array()、[]与new【方法】](https://img.php.cn/upload/article/001/503/042/178091030670754.png?x-oss-process=image/resize,p_40)
PHP定义空数组并没有 new 这种主流方式。所谓“new”写法(如 new array() 或 new Array())在 PHP 中根本不存在、不合法、会直接报错,不属于任何版本的语法,也不见于官方文档、主流框架或编码规范。
真正主流、安全、被广泛采用的方式只有两种:
[](短数组语法)
自 PHP 5.4 起正式支持,是当前新项目、Laravel/Symfony/Drupal 等现代框架的默认写法。
✅ 优点:简洁、语义清晰、嵌套易读、类型声明必需(如private array $items = [];)、静态分析友好
❌ 不适用场景:仅当必须兼容 PHParray()(函数式语法)
PHP 自诞生起就支持,全版本兼容(含 PHP 4.x)。
✅ 优点:向下兼容性强、初学者理解直观、在老旧运维环境或教学中仍有价值
❌ 缺点:字符多、嵌套时括号易混乱(如array(array(array()))),PHP 8.1+ 的静态分析工具可能标记为 “deprecated alias”
至于被误传为“第三种方式”的写法,包括以下几种,均不属于规范定义空数组的方法:
-
$arr = new array();→ 语法错误,PHP 解析失败,Fatal error -
$arr = new Array();→ 类Array不存在,Fatal error(PHP 没有内置Array类) -
$arr = (array) null;→ 是类型转换,不是初始化;语义绕弯,且null转数组虽得[],但掩盖了原始意图 -
$arr = array_fill(0, 0, '');→ 功能上等价,但冗余低效,违反 PSR-12,无实际优势 -
$arr = null;或$arr = "";→ 变量类型不是数组,后续用$arr[] = 1会触发Notice: Undefined variable或Warning: Cannot use a scalar value as an array
所以,严格来说:
- ✅ 真正主流、推荐、可写进企业编码规范的只有:
[]和array() - ❌
new相关写法完全无效,不是“第三种方式”,而是常见误解或混淆了 JavaScript/Java 等语言的语法 - ⚠️ 其他看似能“得到空数组”的写法,要么类型不纯、要么语义失真、要么增加维护成本,不应纳入开发实践
不复杂但容易忽略。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











