php - 基于相似数组键创建数组批处理
问题描述
我正在尝试根据数组的第一个键创建一批类似的数组。
这是输入数组
$headers = array(
0 => 'order_number',
1 => 'product_sku',
);
$input_array = array (
0 =>
array (
0 => '311000000706',
1 => 'S503053'
),
1 =>
array (
0 => '311000000706',
1 => 'S516135'
),
2 =>
array (
0 => '311000000703',
1 => 'S526587'
),
3 =>
array (
0 => '311000000703',
1 => 'S526587'
),
);
我正在尝试创建一个单独的数组,如果它具有相同的订单 ID,例如两个数组具有相同的订单 ID =“311000000706”,那么所需的输出将是
$desired_output = array (
0 =>
array (
0 => '311000000706',
1 => 'S503053'
),
1 =>
array (
0 => '311000000706',
1 => 'S516135'
));
这是我尝试过的
$prev_order_id_s = null;
$similar_order_ids = array();
foreach ($input_array as $key => $level):
if ($level['0'] == $prev_order_id_s) {
$similar_order_ids[][] = $level;
}
$prev_order_id_s = $level['0'];
endforeach;
但我没有得到想要的输出,我需要一些建议。你能就此提出一些逻辑吗?
这是带有上述代码的编译器 - paiza.io/projects/fB-8CfiEuTX1cJXnXAZS3g
解决方案
我宁愿建议您利用订单 ID 作为关联键,并在找到匹配的订单 ID 时继续向其中添加行,而不是维护先前订单 ID 的变量。最后,您可以array_values()
在收集的数据上删除订单 ID 作为键。
<?php
$set = [];
foreach($input_array as $row){
$set[$row[0]][] = $row;
}
$result = array_values($set);
print_r($result);
推荐阅读
- matlab - 如何改进这两个功能以减少给出结果的时间?
- javascript - 移动:在父 div 内水平滚动并在一侧或两侧(左、右)添加外侧渐变
- java - 如何在对话框顶部显示展示视图?
- matlab - 如何在 CVX (Matlab) 中写逆?
- laravel - 在 laravel 中,当我想登录时,它会执行 else 语句并显示错误
- c - 大小为 8 的无效读取 - C 中的 Valgrind
- python - CFFI:只要缓冲区引用它,就保持 cdata 处于活动状态
- appium - 如何为高于〜2的Codeception版本安装Appium驱动程序
- firebase - 我无法在 Firestore 中收到消息(已关闭)
- sql - 检查数字是否在字符串范围内