排序多维数组的最有效方法(php)

时间:2015-02-09 16:37:07

标签: php arrays sorting web multidimensional-array

我正在寻找在php中对多维数组进行排序的最有效方法。我希望按name中的值[result][index][kl][0]对数组进行排序。最快的方法是什么?我的阵列有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
                            )

                    )

            )

谢谢。

2 个答案:

答案 0 :(得分:1)

使用用户定义的排序功能,例如usort以及strcmp

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的文档应该不言自明,以便了解代码的工作原理。

答案 1 :(得分:0)

$result = uasort($result, function($a, $b) {
  return strcmp($a['kl'][0]['name'], $b['kl'][0]['name']);
});