Php 数组中,如何将一些值转换为第一个值?(提供插图)

Php 数组中,如何将一些值转换为第一个值?(提供插图),php,arrays,laravel,Php,Arrays,Laravel,下图显示了我的阵列。正如您在标记的黄色框中看到的,我希望将这些值转换为第一个值。所有这些值都有相同的家具id,并用红色圆圈标记。有可能做到这些吗 简单的laravel方法是: $result = collect($array)->groupBy("furniture_id") ->map(function ($group) { return collect($group)

下图显示了我的阵列。正如您在标记的黄色框中看到的,我希望将这些值转换为第一个值。所有这些值都有相同的家具id,并用红色圆圈标记。有可能做到这些吗


简单的laravel方法是:

$result = collect($array)->groupBy("furniture_id")
            ->map(function ($group) {
                   return collect($group)
                          ->reduce(function ($carry, $groupItemObject) {
                               $groupItem = (array) $groupItemObject;
                               if ($carry == null) {
                                   $carry = array_only($groupItem, ["furniture_id", "furniture_date", "cust_id"]) + [ "price_type" => [ ] ]; //Initial
                               } 
                               $carry["price_type"][] = array_only($groupItem, [ "price", "furniture_type" ]);
                               return $carry;
                         });
            });

它首先根据家具id对所有物品进行分组,然后将这些分组映射到一个只对价格和类型进行分组的条目。

我认为如果您阅读文档,您可以使用一些东西。我只需查看文档……通过使用合并,它覆盖包含相同键名的值,只需使用另一个数组变量,然后遍历该数组的循环,并将这两个值推送到新数组中。因此,新数组将包含家具id、客户id、家具日期和一个具有多个家具类型和价格的数组。哇…不确定为什么这个问题被忽略不确定代码的作用,但我尝试了您的代码,出现了以下错误“array_intersect_key():参数#1不是数组”尝试编辑。这样做的目的是使用许多收集操作,如GroupByMap和reduce。我们的想法是按id分组,然后将每个组映射到一个简化的表单哦,天哪……这很好用,你给了我一个很好的解释的直截了当的答案……我可能会用这个方法做一些实验,非常感谢!