在PHP二维数组开头插入子数组应使用array_unshift、+运算符配合array_values、手动构建或array_merge四种方法,其中array_unshift直接修改原数组,array_merge返回新数组且保持顺序。

如果您需要在 PHP 的二维数组开头插入新的子数组或元素,则不能直接使用 array_push 或类似追加函数,必须采用支持前置插入的数组操作方式。以下是实现此目标的具体步骤:
一、使用 array_unshift 函数插入子数组
array_unshift 专用于在数组开头插入一个或多个元素,对二维数组而言,可直接将新子数组作为参数传入,原数组结构保持不变,仅索引顺序更新。
1、定义原始二维数组,例如 $arr = [['a' => 1], ['b' => 2]];
2、调用 array_unshift($arr, ['c' => 3]);
立即学习“PHP免费学习笔记(深入)”;
3、执行后 $arr 变为 [['c' => 3], ['a' => 1], ['b' => 2]];
4、注意该操作会修改原数组,返回值为新数组长度,而非新数组本身。
二、使用 + 运算符拼接并重排键名
PHP 中数组 + 运算符遵循“左侧优先”原则,但仅适用于字符串键;若需确保新数据始终位于最前且保留数字索引顺序,需配合 array_values 强制重置索引。
1、构造待插入的子数组,如 $new = [['x' => 99]];
2、执行 $result = array_values($new + $arr);
3、该表达式先合并再重索引,可避免键名冲突导致的覆盖问题;
4、注意 + 不会改变右侧数组的原有顺序,仅左侧内容前置生效。
三、手动构建新数组并赋值
通过显式创建空数组并依次填入新子数组与原数组全部元素,可完全控制插入位置与结构形态,适用于需动态判断或条件插入的场景。
1、初始化空数组 $merged = [];
2、使用 $merged[] = ['new_key' => 'new_value'] 插入前置项;
3、遍历原二维数组 $arr,逐个执行 $merged[] = $item;
4、最终 $merged 即为前置添加完成的新二维数组,此方式不依赖函数,兼容所有 PHP 版本。
四、使用 array_merge 与空数组组合
array_merge 能合并多个数组,且天然保持参数顺序;将新子数组作为首个参数传入,即可确保其位于结果数组最前端。
1、准备要插入的子数组 $head = [['init' => true]];
2、调用 $final = array_merge($head, $arr);
3、若 $arr 含字符串键,array_merge 会重新索引数字键,但不会覆盖字符串键,安全性较高;
4、注意该函数返回新数组,原数组 $arr 不会被修改。











