在PHP中排序2D数组|按降序排列

时间:2014-04-18 04:54:15

标签: php arrays

我有一个2D数组,其中第一列包含page_id,第二列包含pointspage_idint值,对应于数据库中的页面网址,points指的是分配给该网页的点数。

我想显示页面,例如首先显示最高点的页面,反之亦然。

如果

示例
arr[0][0] => 2

arr[0][1] => 200

arr[1][0] => 3

arr[1][1] => 29

arr[2][0] => 4

arr[2][1] => 400


----------------------
page_id    |     points
____________________
2           | 200

3           | 29

4           | 400

----------------------------------

应排序为

----------------------
page_id    |     points
____________________
4           | 400

2           | 200

3           | 29

----------------------------------

2 个答案:

答案 0 :(得分:0)

我会编写自己的排序函数,使用php asort()http://php.net/asort)。

示例:

function aasort (&$array, $key) {
    $sorter=array();
    $ret=array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
        $ret[$ii]=$array[$ii];
    }
    $array=$ret;
}

aasort($your_array,"order");

请参阅此处的来源:https://stackoverflow.com/a/2699110/2335675

请注意,$ key或“order”是您要排序的键。因此,如果您想按[x] [1]排序,您的密钥应设置为1

答案 1 :(得分:0)

$pageId = 0;
$points = 0;
for($i=0;$i<count($arr);$i++){
for($j = $i+1;$j< count($arr);$j++){
    if($arr[$i][1] < $arr[$j][1]){
        $pageId = $arr[$i][0];
        $points = $arr[$i][1];
        $arr[$i][0] = $arr[$j][0];
        $arr[$i][1] = $arr[$j][1];
        $arr[$j][0] = $pageId;
        $arr[$j][1] = $points;
    }
}
}

试试这个......它会帮助你。