按order_date对二维数组去重仅保留最后一个子数组的实现方案
解决思路
核心逻辑是利用数组键的唯一性,正序遍历订单条目时用order_date作为临时数组的键,后续出现的同日期条目会自动覆盖先出现的,最终就能拿到每个日期对应的最后一条记录。
同时注意你的原数组还包含total、orders、avg三个汇总字段,需要先拆分订单数据和汇总字段处理,避免汇总数据被误操作。
实现代码(PHP)
// 示例原数组,替换为你实际的数组变量 $originalArray = [ // 你的原始数组内容 ]; // 拆分数字索引的订单列表和字符串键的汇总字段 $orderList = []; $summary = []; foreach ($originalArray as $key => $item) { is_int($key) ? $orderList[] = $item : $summary[$key] = $item; } // 按order_date去重,保留最后出现的条目 $temp = []; foreach ($orderList as $order) { $temp[$order['order_date']] = $order; } // 重置为连续数字索引 $processedOrders = array_values($temp); // 合并得到最终结果 $result = array_merge($processedOrders, $summary); // 输出验证 print_r($result);
处理后结果说明
运行后你得到的$result中,21-02、21-04对应的都是原数组中最后出现的条目,和你要求的移除索引1、4的效果完全一致。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

