在PHP(Laravel)中如何扁平化并合并关联数组得到目标结构?
问题根因
你当前的写法中,map方法会返回由多个单键数组成的集合,作为单独元素插入外层数组时会被自动分配数字下标0,且内部的键值对无法平铺到外层结构,所以会出现你遇到的输出格式。
修复代码
直接使用Laravel集合的pluck方法一键生成符合要求的键值对结构,再和外层数组合并即可,写法最简洁:
return [ 'image' => $this->image, ] + $this->categories()->pluck('pivot.image', 'name')->all();
如果后续需要对分类值做额外逻辑处理,可以用mapWithKeys替代map,实现自定义键的集合生成:
return [ 'image' => $this->image, ] + $this->categories()->get()->mapWithKeys(function ($category) { return [ $category->name => $category->pivot->image ]; })->all();
两种写法最终输出的结构都和你期望的完全一致。
内容的提问来源于stack exchange,提问作者ali alizade
相关产品推荐
相关产品推荐

