You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP多维数组合并方法及Laravel批量插入array_push报错解决

PHP多维数组合并与Laravel批量插入问题解决

让我来分别解决你的两个问题:

问题1:如何在PHP中将两个数组合并为一个多维数组?

这取决于你想要的多维数组结构,常见的两种场景如下:

场景1:将两个数组作为子数组放入新数组

如果只是想把两个独立的数组变成一个多维数组的两个元素,直接用数组字面量包裹即可:

$array1 = [1, 2, 3];
$array2 = ['a', 'b', 'c'];
$multiArray = [$array1, $array2];
// 结果:[[1,2,3], ['a','b','c']]

场景2:按对应键合并为嵌套数组

如果两个数组有匹配的键,想要把对应键的值组成子数组,可以用array_map或者循环实现:

$array1 = ['name' => 'Alice', 'age' => 25];
$array2 = ['name' => 'Bob', 'age' => 30];

// 用array_map实现
$multiArray = array_map(function($val1, $val2) {
    return [$val1, $val2];
}, $array1, $array2);
// 结果:['name' => ['Alice', 'Bob'], 'age' => [25, 30]]

问题2:Laravel批量插入时array_push报错的解决方法

你的报错array_push() expects parameter 1 to be array, int given是因为**array_push的返回值是数组的新长度(整数)**,而你把这个返回值重新赋值给了$array。第一次循环后$array就变成了整数1,第二次循环时参数1不再是数组,自然报错。

修正方案:用数组追加语法替代array_push

最简洁直观的方式是直接用$array[] = ...来追加元素,这种方式不会返回长度,而是直接修改原数组:

$code = time();
$array = []; // 推荐用短数组语法,更简洁
for ($qty = 0; $qty < $e->qty; $qty++) {
    $array[] = [
        'coupon_code' => $code + $qty,
        'amount' => $e->amount,
        'expiry_date' => $e->expiry_date,
        'assigned_to' => $e->user_id,
        'assigned_date' => date('Y-m-d'),
        'created_by' => session('admin_id'),
    ];
}
DB::table('coupons')->insert($array);

如果你坚持用array_push

只要不要把它的返回值赋值给原数组即可,正确用法是:

// 不要写 $array = array_push(...)
array_push($array, [
    // 你的数据
]);

这样循环结束后,$array就是一个包含多个子数组的多维数组,完全符合Laravel批量插入的要求。

内容的提问来源于stack exchange,提问作者Haren Sarma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:46:08