最常用的是[]和array(),另有3种合法写法:php 7.4+类型声明结合空数组、array_fill(0,0,null)或range(1,0)等技巧性构造、(array)null等强制类型转换。

PHP定义空数组最常用的是[]和array(),但其实还有3种合法写法——有些在特定场景下更清晰或更安全。
1. 方括号语法(推荐)
PHP 5.4+ 支持简洁的方括号写法,是目前最主流、最易读的方式:
-
$arr = [];—— 直观、轻量,适合绝大多数情况 - 兼容性好(5.4及以上),现代框架和代码库普遍采用
- 比
array()少打6个字符,书写效率高
2. array() 函数写法(向后兼容)
PHP 所有版本都支持,适合需要兼容老版本(如 PHP 5.3 或更早)的项目:
-
$arr = array();—— 语义明确,新手容易理解 - 注意:PHP 7.4 起已不推荐用于空数组,但仍是合法语法
- 如果后续要初始化带值的数组,比如
array(1, 2, 3),这种写法仍常见
3. 类型声明 + 空数组(PHP 7.4+)
配合类型声明使用,增强代码可读性和 IDE 提示:
-
$arr = array();或$arr = [];都可以配合类型提示 - 例如:
/** @var int[] */ $numbers = []; - 或函数返回类型:
function getItems(): array { return []; } - 这不是“新语法”,而是类型系统与空数组的结合用法
4. 使用 array_fill() 或 range() 构造(特殊需求)
严格来说不算“定义空数组”,但在某些逻辑中可间接实现“清空”或“重置”效果:
-
$arr = array_fill(0, 0, null);→ 返回空数组(长度为0) -
$arr = range(1, 0);→ 也返回空数组(起始大于结束) - 这些属于技巧性写法,不推荐日常使用,仅用于教学或调试理解数组行为
5. 强制类型转换(不推荐但合法)
通过类型转换生成空数组,语法上成立但语义模糊:
-
$arr = (array) null;→ 转换 null 得到空数组 -
$arr = (array) '';→ 字符串转数组,结果也是[] - 这类写法容易引发误解,降低可维护性,新手应避免
- 仅在处理不确定类型输入(如 API 参数)时,作为防御性转换偶尔出现
实际开发中,优先选[];维护老项目看PHP版本;加类型注解提升协作效率;其余方式了解即可,不必刻意使用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











