php - 如何按其他数组对php多维数组进行排序
问题描述
我有一个 ID 看起来像的数组
$order_ids = array(8,9,10,4,7);
和另一个看起来像的多维数组
array(
0 => array(
0 => 4, // order id
1 => 23 // item_id
2 => 1 // qty
),
1 => array(
0 => 9, // order id
1 => 66 // item_id
2 => 4 // qty
),
2 => array(
0 => 8, // order id
1 => 17 // item_id
2 => 3 // qty
),
)
我试过
$keys = array_flip($order_ids);
usort($multiarray, function($a, $b) use($keys)
{
return $keys[$a] - $keys[$b[0];
});
第二个数组的 order_ids 对应于第一个数组中的值。我需要做的是按 order_ids 按照它们在第一个数组中的顺序对第二个数组进行排序。
解决方案
您可以循环浏览记录并将它们存储在- 结果$arr
设置的顺序中:$order_ids
$newArr
<?php
$order_ids = array(8,9,10,4,7);
$arr = [
[4, 23, 1],
[9, 66, 4],
[8, 17, 3],
];
foreach($order_ids as $id) {
foreach($arr as $record) {
if($record[0] == $id) {
$newArr[] = $record;
break;
}
}
}
推荐阅读
- powershell - 将类中对象的事件处理程序连接到同一类中的方法
- typescript - 这个 TypeScript 函数参数是如何工作的
- javascript - 使用 JS 如何检测我悬停的颜色?
- c++ - 使用 For 循环制作位图的最简单和最有效的方法
- scala - Scala:使用 PureConfig 创建通用实用程序
- awk - 使用 awk 命令透视表内容
- php - 客户端未授权使用此方法检索访问令牌,或者客户端未授权任何请求的范围
- polymer-2.x - Polymer 2.0 将 id 动态分配给
- 在 dom-repeat 模板中使用 this.shadowRoot.querySelector() 在数组上的观察方法中返回 null
- javafx - FXML 文件加载但不显示在场景中
- android - 如何防止在 Fragment 不可见时激活 LiveData 观察者