我有一个数组数组,所有内部数组都包含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.
答案 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上的第三个例子可以帮助你。