[英]Sorting a 2D array in PHP | in descending order
我有一個2D數組,其中第一列包含page_id
,第二列包含points
。 page_id
是int
值,它對應於數據庫中的頁面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.