PHP如何基于二维数组首个键值(订单号)将同值成员分组为批量数组
PHP按二维数组首个元素(订单号)归类数据实现方案
原代码问题说明
- 仅对比当前订单号与上一条的订单号,同订单号的第一条数据不会被加入结果集
- 仅支持连续排列的同订单号数据识别,若同订单号数据不连续会出现遗漏
- 没有初始化存储首个匹配订单数据的逻辑
实现方案
方案1:直接提取指定订单号的所有数据(匹配你给出的预期输出场景)
该方案适合你当前只需要获取特定订单号对应数据的需求:
// 定义要提取的目标订单号 $target_order = '311000000706'; $desired_output = []; foreach ($input_array as $item) { if ($item[0] === $target_order) { $desired_output[] = $item; } } // 打印验证结果 var_dump($desired_output);
运行后得到的$desired_output就是你给出的预期输出结构。
方案2:全量按订单号分组(扩展性更强)
如果后续需要处理多组不同订单号的归类,建议先把所有数据按订单号分组,后续按需取用:
$order_groups = []; foreach ($input_array as $item) { $order_num = $item[0]; // 以订单号为键,把同订单的所有数据存入同一分组 $order_groups[$order_num][] = $item; } // 要获取指定订单号的数据直接取值即可,无对应订单时返回空数组 $desired_output = $order_groups['311000000706'] ?? []; // 打印验证结果 var_dump($desired_output);
该方案不受同订单号数据排列顺序影响,即使同订单的数据分散在数组的不同位置也能正确归类。
内容的提问来源于stack exchange,提问作者user15931984
相关产品推荐
相关产品推荐

