按日期分组二维数组 合并name字段为逗号分隔字符串
解决二维数组按date分组并合并name的问题
嘿,我懂你要实现的需求——把相同日期下的name字段合并成逗号分隔的字符串,之前的方案没达到预期可能是因为没有精准地按date做分组处理。这里给你一个简单直接的PHP实现方案:
首先是完整的代码示例:
$missedFridgeLog = [ [ "date" => "01/01/18", "name" => "Medicine" ], [ "date" => "01/01/18", "name" => "Drugs" ], [ "date" => "02/01/18", "name" => "Medicine" ], [ "date" => "02/01/18", "name" => "Drugs" ] ]; // 初始化分组容器 $groupedData = []; foreach ($missedFridgeLog as $entry) { $currentDate = $entry['date']; // 如果当前日期还未创建分组,先初始化 if (!isset($groupedData[$currentDate])) { $groupedData[$currentDate] = [ 'date' => $currentDate, 'name' => [] ]; } // 将当前条目name加入对应日期的数组 $groupedData[$currentDate]['name'][] = $entry['name']; } // 把每组的name数组转为逗号分隔字符串,并重置索引 $finalResult = array_map(function($group) { $group['name'] = implode(',', $group['name']); return $group; }, array_values($groupedData)); // 查看结果 print_r($finalResult);
代码逻辑说明:
- 第一步遍历原始数组,用
date作为分组键,确保相同日期的条目会被归到同一组中; - 每个分组先把
name存为数组,方便后续批量合并; - 最后用
array_map配合implode将每组的name数组转为逗号分隔的字符串,再通过array_values重置数组索引,就能得到你想要的输出格式。
这个方案逻辑清晰,不管同日期下有多少个name条目,都能正确合并,而且容易调试和维护。
内容的提问来源于stack exchange,提问作者dhruv jadia
相关产品推荐
相关产品推荐

