Php 数组中,如何将一些值转换为第一个值?(提供插图)
下图显示了我的阵列。正如您在标记的黄色框中看到的,我希望将这些值转换为第一个值。所有这些值都有相同的家具id,并用红色圆圈标记。有可能做到这些吗Php 数组中,如何将一些值转换为第一个值?(提供插图),php,arrays,laravel,Php,Arrays,Laravel,下图显示了我的阵列。正如您在标记的黄色框中看到的,我希望将这些值转换为第一个值。所有这些值都有相同的家具id,并用红色圆圈标记。有可能做到这些吗 简单的laravel方法是: $result = collect($array)->groupBy("furniture_id") ->map(function ($group) { return collect($group)
简单的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分组,然后将每个组映射到一个简化的表单哦,天哪……这很好用,你给了我一个很好的解释的直截了当的答案……我可能会用这个方法做一些实验,非常感谢!