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

如何将二维数组映射为单个关联数组?

解决二维数组合并为单一关联数组的问题

嘿,我懂你想要把那个嵌套的二维数组整合成一个单一关联数组的需求~用map没搞定很正常,因为map更多是用来转换每个元素的结构,而不是合并数组。给你几个简单直接的方案:

首先先明确你的输入和期望输出:

输入数组

$originalArray = [
    ["FNAME" => "nullable|string"],
    ["LNAME" => "nullable|string"]
];

期望输出

$desiredArray = [
    "FNAME" => "nullable|string",
    "LNAME" => "nullable|string"
];

方案1:Laravel集合(推荐,如果你在用Laravel)

用collapse()方法就能一步到位,它专门用来把多维数组里的子数组合并成一维:

$mergedArray = collect($originalArray)->collapse()->toArray();

如果想更灵活一点,也可以用flatMap,效果完全一致:

$mergedArray = collect($originalArray)->flatMap(function ($item) {
    return $item;
})->toArray();

方案2:原生PHP(不用框架也能搞定)

用array_reduce遍历并逐个合并子数组:

$mergedArray = array_reduce($originalArray, function ($carry, $item) {
    // 把每个子数组合并到累加器数组中
    return array_merge($carry, $item);
}, []); // 初始值设为空数组

或者更简洁的写法,用call_user_func_array配合array_merge:

$mergedArray = call_user_func_array('array_merge', $originalArray);

这个方法会把所有子数组作为参数传给array_merge,直接完成合并。


为什么用map没成功?

map方法的核心是转换每个元素,但它会保留原有的数组层级。比如你如果写:

collect($originalArray)->map(function ($item) {
    return $item;
});

得到的还是原来的二维数组,除非你在map之后再额外做一次合并操作,显然不如上面的方法高效直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:39:30