[英]How to Sort PHP Array Based On 2 Keys, One is Ascending And The Other is Descending
我有这个数组:
$order_list = array ( array ("tangible", 1, 8, 1, 19000),
array ("tangible", 6, 2, 10, NULL),
array ("tangible", 1, 17, 1, 28000));
并且我有以下代码对其进行排序:
usort($order_list, function ($a, $b) {
if ($a[1] == $b[1]) return 0;
return (int) $a[1] < (int) $b[1] ? -1 : 1;
});
问题是,它只$order_list[$i][1]
升序排序。 它将产生以下结果:
array ("tangible", 1, 8, 1, 19000)
array ("tangible", 1, 17, 1, 28000)
而我还需要对$order_list[$i][2]
进行排序,但是要降序。 因此它将产生:
array ("tangible", 1, 17, 1, 28000)
array ("tangible", 1, 8, 1, 19000)
array ("tangible", 6, 2, 10, NULL)
如何基于这样的2个键对数组进行排序? 之前感谢。
您应该更改排序算法以同时检查第二列。 您应该执行以下操作。 代码中的注释。
usort($order_list, function ($a, $b) {
// if both columns are same return 0
if ((int) $a[1] == (int) $b[1] && (int) $a[2] == (int) $b[2]) return 0;
// if first column is equal sort on the second column
if ((int) $a[1] == (int) $b[1]){
return (int) $a[2] > (int) $b[2] ? -1 : 1;
}
// else sort on the first column
return (int) $a[1] < (int) $b[1] ? -1 : 1;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.