PHP中向数组追加子数组有五种方法:一、array_push()将子数组作为新元素压入索引数组末尾;二、$arr[] = [...]自动分配整数键;三、+=仅在键不存在时追加关联子数组;四、array_merge()合并数组,子数组作为独立元素;五、$arr['key'][] = [...]指定键名嵌套添加。

如果您希望在PHP中向一个现有数组追加一个新的子数组,而非覆盖或替换原有元素,则需根据目标数组的结构类型(索引数组或关联数组)选择合适的方式。以下是几种常用且互不依赖的实现方法:
一、使用 array_push() 函数追加子数组
array_push() 将一个或多个元素压入数组末尾,适用于索引数组,新子数组将作为独立元素添加,保持原有键值结构不变。
1、定义原始数组,例如 $arr = [1, 2];
2、调用 array_push($arr, ['a', 'b']);
立即学习“PHP免费学习笔记(深入)”;
3、执行后 $arr 变为 [1, 2, ['a', 'b']],其中 第三个元素是一个完整子数组
二、使用方括号语法直接追加
通过空方括号 [] 可以在索引数组末尾自动分配下一个整数键,操作简洁且性能较高,适合单次添加。
1、初始化数组 $data = ['x' => 'val'];
2、执行 $data[] = ['item1', 'item2'];
3、此时 $data 中新增一个索引键(如键为 0 或递增整数),其值为 ['item1', 'item2']
三、使用 += 运算符合并关联子数组
当目标数组为关联数组,且需以指定键名嵌入子数组时,+= 可用于追加键值对,但仅在键不存在时生效,不会覆盖已有键。
1、声明主数组 $config = ['host' => 'localhost'];
2、执行 $config += ['database' => ['name' => 'test', 'port' => 3306]];
3、结果中 'database' 键及其子数组被成功加入,且原 'host' 键不受影响
四、使用 array_merge() 合并两个数组
array_merge() 将一个或多个数组的值合并为新数组,若参数为索引数组,则子数组作为独立元素追加;若含字符串键,则后者覆盖前者同名键。
1、设定 $base = [10, 20];
2、设定 $sub = [['x', 'y'], ['m', 'n']];
3、执行 $result = array_merge($base, $sub);
4、$result 的结构为 [10, 20, ['x', 'y'], ['m', 'n']],即 每个子数组均成为独立元素
五、使用 [] 指定键名嵌入子数组
对于明确需要控制嵌套层级与键名的场景,可直接使用带键的方括号语法,强制将子数组写入特定键下,适用于构建多维配置结构。
1、初始化 $tree = [];
2、执行 $tree['users'][] = ['id' => 1, 'name' => 'Alice'];
3、再次执行 $tree['users'][] = ['id' => 2, 'name' => 'Bob'];
4、最终 $tree['users'] 是一个包含两个关联子数组的索引数组,键名为 'users' 的值本身就是一个数组










