php - 通过分组的两个字段值对数组进行排序
问题描述
更新:我通过 ID 获得数组顺序,并且与组一起,如您所见,每个 cals 都聚集在一起。我想先按 ID 排序,从大到小(反转为数组),然后在每个类中按名称排序,我将举例说明。
我有这个数组:
Array
(
[0] => Array
(
[0] => 1 //ID
[1] => 88 //Class
[2] => 'a' //Name
)
[1] => Array
(
[0] => 2 //ID
[1] => 88 //Class
[2] => 'b' //Name
)
[2] => Array
(
[0] => 3 //ID
[1] => 7 //Class
[2] => 'v' //Name
)
[3] => Array
(
[0] => 4 //ID
[1] => 332 //Class
[2] => 'd' //Name
)
[4] => Array
(
[0] => 5 //ID
[1] => 332 //Class
[2] => 'z' //Name
)
)
在我想要得到的过程之后:
Array
(
[0] => Array
(
[0] => 4 //ID
[1] => 332 //Class
[2] => 'd' //Name
)
[1] => Array
(
[0] => 5 //ID
[1] => 332 //Class
[2] => 'z' //Name
)
[2] => Array
(
[0] => 3 //ID
[1] => 7 //Class
[2] => 'v' //Name
)
[3] => Array
(
[0] => 1 //ID
[1] => 88 //Class
[2] => 'a' //Name
)
[4] => Array
(
[0] => 2 //ID
[1] => 88 //Class
[2] => 'b' //Name
)
)
我尝试将 array_multisort 与 2 个字段一起使用,但它不起作用。有人有想法吗?
感谢
解决方案
这并不是我所说的分组,尽管我明白你为什么会这样想。实际上,这只是一种具有一组分层标准的排序,而不仅仅是一个单一的标准。您按父 ID 排序,然后使用 ID 打破平局。可以用usort
.
usort($data, function($a, $b) {
// compare group ID
return ($a[2] - $b[2]) ?: ($a[0] - $b[0]);
// compare ID if group ID is equal
});
推荐阅读
- android - 使用 OpenVPN Connect 连接到 Genymotion Android 中的 VPN
- python - 重新采样 datetime64 时间序列数据帧时出错
- python - 检查是否安装了python 3的问题
- r - 转换时间序列数据的问题
- code-maintainability - 管理长期项目中的解决方法列表
- r - 如何在 r 中跳过不完全空的行
- javascript - 如何将数组分配给状态变量?
- c - 创建函数时尝试在 C 中打印
- c# - 如何确定 Microsoft.Owin 中的 SignalR 为何返回 HTTP 500?
- angular - Angular-材料表排序无法正常工作