0

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

现在,我正在使用 a 遍历数组,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 each 遍历它,按每个内部数组中的最后一项对其进行排序,然后使用 array_push 将数组按顺序推送到新的二维数组中。

所以新的二维数组看起来像:

$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.
4

2 回答 2

4

您可以根据usort()需要对数组进行排序,并end()获取数组中的最后一个值等。因此这将按每个数组中的最后一个索引对数组数组进行排序,最高优先:

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

usort($twoDUnsorted, "cmp");
于 2013-05-29T23:25:27.023 回答
0

已经有了多维排序功能。我认为此页面上的第三个示例应该对您有所帮助。

于 2013-05-29T23:30:25.563 回答