簡體   English   中英

用PHP對2D數組排序 降序排列

[英]Sorting a 2D array in PHP | in descending order

我有一個2D數組,其中第一列包含page_id ,第二列包含points page_idint值,它對應於數據庫中的頁面url, 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

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

我將編寫自己的排序函數,該函數將使用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

$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;
    }
}
}

試試這個...會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM