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

如何使用Laravel Collection转换数组结构并添加指定字段

使用Laravel Collection优雅转换数组结构并添加字段

没问题,用Laravel Collection的map方法完全可以实现这个需求,代码比foreach更简洁优雅,还能利用Collection的链式操作优势!

实现代码

首先我们把原生PHP数组转换成Collection实例,然后通过map遍历每一项,合并字段并添加changeby:

$packers_id = [
    [984538,["PartCode"=>"packs701620010","Qty"=>"13","ID"=>"1398163","Date"=>"2020\/08\/08 15:4:6"]],
    [984538,["PartCode"=>"packs701620020","Qty"=>"1","ID"=>"1398164","Date"=>"2020\/08\/08 15:4:6"]],
    [984543,["PartCode"=>"packs701620010","Qty"=>"13","ID"=>"1398163","Date"=>"2020\/08\/08 15:4:6"]],
    [984543,["PartCode"=>"packs701620020","Qty"=>"1","ID"=>"1398164","Date"=>"2020\/08\/08 15:4:6"]]
];

// 转换并添加字段
$transformed = collect($packers_id)->map(function ($item) {
    return array_merge(
        ['Arr_ID' => (string)$item[0], 'changeby' => 'me'],
        $item[1]
    );
})->toArray();

// 查看结果
dd($transformed);

更简洁的写法(PHP 7.4+)

如果你的项目用的是PHP 7.4及以上版本,还可以用短闭包让代码更紧凑:

$transformed = collect($packers_id)->map(fn($item) => array_merge(
    ['Arr_ID' => (string)$item[0], 'changeby' => 'me'],
    $item[1]
))->toArray();

代码解释

  • collect($packers_id):把原生PHP数组转换成Laravel Collection实例,这样就能调用所有Collection的便捷方法。
  • map():遍历Collection中的每一项,每个$item对应原数组里的子数组(比如[984538, {...}])。
  • array_merge():将Arr_ID、changeby字段和原关联数组合并,得到你需要的结构。
  • toArray():如果需要把Collection转回原生PHP数组,调用这个方法即可;如果后续还要用Collection操作,可以省略这一步。

这样处理后,得到的结果完全符合你想要的数组结构,代码也更简洁易读~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:52:31