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

如何合并数组?array_merge失效,Laravel场景下数组合并需求问询

解决数组子数组合并问题

嘿,我来帮你搞定这个问题~ 你现在遇到的问题根源在于:你循环生成的$array是一个二维数组,每个元素都是独立的单键值对数组(比如[['2024-05-01' => 'Match'], ['2024-05-02' => 'Match']]),而直接调用array_merge($array)是无效的——因为array_merge需要接收多个数组作为参数,而不是一个包含数组的数组。

下面给你几种简单有效的解决方案:

方法一:循环时直接构建一维数组(最推荐)

其实根本不需要先生成二维数组再合并,直接在循环里把键值对放到一维数组里就好,一步到位:

$matchs = DiraChatLog::where('status','=','Match')->whereBetween('date_access', [$request->from, $request->to])->get();
$array = []; // 先初始化空数组
foreach ($matchs as $match) {
    // 直接将date_access作为键,status作为值存入一维数组
    $array[$match->date_access] = $match->status;
}
dd($array);

方法二:用Laravel集合快速合并(已有二维数组时)

如果你已经生成了那个二维的$array,可以用Laravel自带的集合工具来快速合并:

// 把二维数组转成集合,用collapse()展开成一维,再转回普通数组
$mergedArray = collect($array)->collapse()->toArray();
dd($mergedArray);

collapse()方法专门用来将多维数组展开为一维,完美适配你的场景。

方法三:原生PHP的array_merge配合展开运算符

如果你想用纯PHP的方式,可以用展开运算符把二维数组的每个子数组拆成array_merge的参数:

// 用...展开$array里的每个子数组,作为array_merge的多个参数
$mergedArray = array_merge(...$array);
dd($mergedArray);

注意:如果你的PHP版本低于7.4,展开运算符不支持,这时候可以用call_user_func_array替代:

$mergedArray = call_user_func_array('array_merge', $array);
dd($mergedArray);

额外提醒

如果多个子数组存在相同的date_access键,后面的元素会覆盖前面的,这是所有合并方法的默认行为,需要你留意这一点哦~

内容的提问来源于stack exchange,提问作者Rajveer Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:41:49