开发者社区> 问答> 正文

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
            )
)

问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 11:27:04 394 0
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']为整数。使用@St。约翰逊的解决方案,如果他们是字符串。

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

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

    2020-02-08 11:27:19
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载