小编典典

PHP按子数组值对数组排序

php

我有以下数组结构:

Array
        (
            [0] => Array
                (
                    [configuration_id] => 10
                    [id] => 1
                    [optionNumber] => 3
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )

            [1] => Array
                (
                    [configuration_id] => 9
                    [id] => 1
                    [optionNumber] => 2
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )

            [2] => Array
                (
                    [configuration_id] => 8
                    [id] => 1
                    [optionNumber] => 1
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )
    )

基于,以增量方式对数组进行排序的最佳方法是optionNumber什么?

因此结果如下所示:

Array
        (
            [0] => Array
                (
                    [configuration_id] => 8
                    [id] => 1
                    [optionNumber] => 1
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )

            [1] => Array
                (
                    [configuration_id] => 9
                    [id] => 1
                    [optionNumber] => 2
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )

            [2] => Array
                (
                    [configuration_id] => 10
                    [id] => 1
                    [optionNumber] => 3
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )
    )

阅读 353

收藏
2020-05-26

共1个答案

小编典典

使用usort

function cmp_by_optionNumber($a, $b) {
  return $a["optionNumber"] - $b["optionNumber"];
}

...

usort($array, "cmp_by_optionNumber");

在PHP≥5.3中,应改为使用匿名函数:

usort($array, function ($a, $b) {
    return $a['optionNumber'] - $b['optionNumber'];
});

请注意,以上两个代码均假定$a['optionNumber']为整数。


在PHP≥7.0,使用<=>,而不是减法,以防止溢出/截断问题。

usort($array, function ($a, $b) {
    return $a['optionNumber'] <=> $b['optionNumber'];
});
2020-05-26