推荐用[]定义空数组,PHP 5.4+支持且最简洁;兼容旧版用array();类属性声明typed数组必须用[];多维数组需显式初始化子数组,避免notice。

PHP定义空数组不难,但不同场景下写法有差异,选错可能影响可读性、类型安全或兼容性。关键看PHP版本、使用位置(全局/函数内/类属性)和后续用途。
一维空数组的三种主流写法
现代项目推荐用[],老项目或需兼容PHP 5.3及更早版本时用array():
-
短语法(PHP 5.4+):
$arr = [];—— 最简洁,语义明确,是当前标准写法 -
函数语法(全版本兼容):
$arr = array();—— 适合维护旧系统或明确要求向后兼容的场景 -
动态隐式创建:
$arr[] = 'first';—— 不预先声明也能用,PHP自动初始化为空数组再追加,但首次读取未定义键会触发 notice
类中声明 typed 空数组(PHP 7.4+)
在类属性定义时,可结合类型声明直接初始化,增强代码健壮性:
-
private array $items = [];—— 必须用[],array()不被接受 -
public array $config = ['debug' => false];—— 也支持带默认值的初始化 - 注意:这种写法仅限类属性,不能用于函数内部变量
二维及多维空数组的初始化方式
空的多维数组本质是“数组里存空数组”,初始化分显式与隐式两种路径:
立即学习“PHP免费学习笔记(深入)”;
-
显式嵌套声明:
$matrix = [[], [], []];或$matrix = [array(), array(), array()]; -
逐层动态赋值:
$grid = []; $grid[0] = []; $grid[1] = ['x', 'y']; -
关联结构初始化:
$users = ['admin' => [], 'guest' => []];—— 键名语义清晰,适合配置或映射场景 - 避免写
$arr[0][0] = 'val';前不初始化$arr[0],否则会报 notice;稳妥做法是先设$arr[0] = [];
特殊场景下的空数组处理
有些情况看似“空”,实则需要额外注意逻辑边界:
-
函数返回空数组:如
array_filter($data, fn($x) => false)结果为[],可直接用empty()或count() === 0判断 -
清空已有数组:
$arr = [];是重置,unset($arr)是销毁变量,二者行为不同 -
验证是否真为空:用
var_dump($arr)确认结构,尤其当键名含字符串数字(如"01")时,PHP不会自动转成整型键,可能造成误判



















