按每个内部数组中的最后一个值排序2D数组

时间:2013-05-29 23:19:09

标签: php sorting

我有一个数组数组,所有内部数组都包含4个字符串和一个int。

现在,我正在使用foreach在数组中旅行,我正在寻找帮助按数字(最后一项)对内部数组进行排序,以便先选更高/更大的数组,然后再传输它们进入以这种方式排序的新数组。

$twoDUnsorted = array(
    array(
        0=>"the",
        1=>"quick",
        2=>"brown",
        3=>"fox",
        4=>650
    ),
    array(
        0=>"jumps",
        1=>"over",
        2=>"the",
        3=>"lazy",
        4=>420
    ),
    array(
        0=>"it",
        1="was",
        2=>"the",
        3=>"worst"
        4=>1016
    ),
    array(
        0=>"of",
        1=>"times",
        2=>"it",
        3=>"was",
        4=>768
    ),
    array(
        0=>"the",
        1=>"best",
        2=>"of",
        3=>"times,
        4=>123
   )
);

然后用一个for a遍历它,按每个内部数组中的最后一项对其进行排序,然后使用array_push按顺序将数组推送到新的2D数组中。

所以新的2D数组看起来像:

$twoDSorted = array(
    array(
        0=>"it",
        1="was",
        2=>"the",
        3=>"worst"
        4=>1016
    ),
    array(
        0=>"of",
        1=>"times",
        2=>"it",
        3=>"was",
        4=>768
    ),
    array(
        0=>"the",
        1=>"quick",
        2=>"brown",
        3=>"fox",
        4=>650
    ),
    array(
        0=>"jumps",
        1=>"over",
        2=>"the",
        3=>"lazy",
        4=>420
    ),
    array(
        0=>"the",
        1=>"best",
        2=>"of",
        3=>"times,
        4=>123
   )
);

I would appreciate any and all help sorting them and pushing them into the new array in order.

2 个答案:

答案 0 :(得分:4)

您可以使用usort()对数组进行排序,然后end()获取数组中的最后一个值等。这样就可以按每个数组中的最后一个索引对数组进行排序数组,最高的第一个:

function cmp($a, $b) {
    if (end($a) == end($b)) {
        return 0;
    }
    return (end($a) > end($b)) ? -1 : 1;
}

usort($twoDUnsorted, "cmp");

答案 1 :(得分:0)

已经有了多维排序功能。我认为this page上的第三个例子可以帮助你。