如何基于2个键对PHP数组进行排序,一个键升序,另一个键降序

圣罗布森

我有这个数组:

$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个键对数组进行排序?之前感谢。

凯文

正如本排序数组概述已解决的那样,您可以交换$a$b以降序方式进行处理:

usort($order_list, function ($a, $b) {
    if( ($c = $a[1] - $b[1]) !== 0) {
        return $c;
    } else {
        return $b[2] - $a[2]; // descending
    }
});

样本输出

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用一个键升序和一个键降序按值对嵌套列表的字典进行排序?

通过基于另一个数组的键对数组进行排序?

基于数组中的一个键值如何找到另一个键的值?

根据数组键顺序对另一个数组内的数组进行排序

根据另一个键数组对对象数组进行排序

根据另一个数组的键对数组元素进行排序

如何按一个元素升序和另一个降序对列表列表进行排序

如何通过按另一个数组的顺序找到的键对对象数组进行排序

如果看到重复值,如何通过键对对象数组进行排序,然后在 javascript 中通过另一个键对它们进行排序?

如何通过另一个json值对json中的键进行排序

按一个键对数组进行排序,但按另一个键列出数组的有效方法?

基于另一个键的值的条件类型

根据另一个键的值查找数组中一个键的值

用PHP中的另一个数组键替换一个数组键

如何基于从另一个可观察对象返回的键中的键创建可观察/ http请求的数组

如何在反应中用另一个对象键数组替换一个对象键的数组

如何使用一个重复键和另一个唯一键过滤对象数组

php如何通过另一个数组值搜索数组键

如何从另一个数组的值构建PHP中多维数组的键?

如何在PHP的另一个数组中将数组存储为键的值?

创建一个排序的数组键

如何使一个键模拟另一个键?

如何从PHP中具有相同键的另一个数组向数组的键添加值?

PHP:如何将一个数组中的键与另一个数组中的值进行比较,并返回匹配项?

按一个因子列升序对数据框进行排序,另一个因子降序

根据另一个对象数组替换键

基于另一个对象键的Javascript对象排序

基于另一个阵列键和方向(左或右)的阵列排序逻辑

用另一个具有相同索引的键数组对[key => value]数组进行排序