【问题标题】:Most efficient way to sort a multidimensional array (php)对多维数组进行排序的最有效方法 (php)
【发布时间】:2015-02-09 16:37:07
【问题描述】:

我正在寻找在 php 中对多维数组进行排序的最有效方法。我想按 [result][index][kl][0] 中的值 name 对数组进行排序。最快的方法是什么?我的数组有大约 100 个元素。 我的数组如下所示:

Array
(
[jsonrpc] => 2.0
[id] => req-002
[result] => Array
    (
        [0] => Array
            (
                [type] => subst
                [lsid] => 11
                [date] => 20150209
                [startTime] => 955
                [endTime] => 1040
                [kl] => Array
                    (
                        [0] => Array
                            (
                                [id] => 29
                                [name] => S12UB
                            )

                    )

            )

        [1] => Array
            (
                [type] => subst
                [lsid] => 11
                [date] => 20150209
                [startTime] => 1045
                [endTime] => 1130
                [kl] => Array
                    (
                        [0] => Array
                            (
                                [id] => 29
                                [name] => S12UB
                            )

                    )

            )

谢谢。

【问题讨论】:

    标签: php arrays sorting web multidimensional-array


    【解决方案1】:

    使用用户定义的排序函数,例如usortstrcmp

    function compareByName($a, $b) {
        // the strcmp returns a numeric value above or below 0 depending on the comparison
        return strcmp($a['k1'][0]['name'], $b['k1'][0]['name']);
    }
    

    那么,假设你的多维数组名为$array,将多维数组$array['result']替换为新排序的数组:

    $array['result'] = usort($array['result'], 'compareByName');
    

    usortstrcmp 的文档应该是不言自明的,以便理解上面的代码是如何工作的。

    【讨论】:

      【解决方案2】:
      $result = uasort($result, function($a, $b) {
        return strcmp($a['kl'][0]['name'], $b['kl'][0]['name']);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-16
        • 1970-01-01
        • 2016-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多