[英]Best way to sort 2d Array Php
我正在從具有2列的文本文件中讀取。 名稱,等級看起來像這樣:
quxerm,6
brock,5
chris,15
因此,二維數組看起來像[0] [0] = quxerm,[0] [1] = 6 [1] [0] =布羅克[1] [1] = 5
我已經像上面顯示的那樣將它們放入2d數組中。
我需要按照整數列的降序對這些值進行排序。 我該如何分類?
@CBergau的答案幾乎是完美的,但是順序將是升序而不是降序。 要使其下降,只需切換由usort調用的compare函數的返回值即可。 有關更多信息,請參見http://www.php.net/manual/zh/function.usort.php 。
function cmp(array $a, array $b) {
return ($a[1] < $b[1]) ? 1 : -1;
}
usort($arr, 'cmp');
示例: http : //codepad.org/QRTQLxTh
您還可以擴展比較功能,例如,使用strcmp在等級相同時按名稱升序排列。 有關更多信息,請參見http://www.php.net//manual/zh/function.strcmp.php 。
function cmp(array $a, array $b) {
if ($a[1] == $b[1]) {
return strcmp($a[0], $b[0]);
}
return ($a[1] < $b[1]) ? 1 : -1;
}
示例: http : //codepad.org/SeRTE3Ym
注意 :我的信譽還不夠,只能評論@CBergau的答案。
將數組作為arr [i] [j]。
嘗試僅通過更改i的值進行比較。
for(int i=0;i<3;i++) for(int k=1;k<3;k++) if(arr[i][1]>arr[k][1]) max=i
您可以通過以下方式檢索max: arr[max][0]//name of max arr[max][1]//value of max
$sorted = array();
foreach($yourArray as $a){
$sorted[$a[1]] = $a[0];
}
ksort($sorted);
vardump($sorted);
這應該按整數列排序:
usort(
$data,
function ($arrayOne, $arrayTwo) {
return ($arrayOne[1] < $arrayTwo[1]) ? -1 : 1;
}
);
如果沒有重復的名稱,則可以簡單地為鍵(名稱)分配等級,並在保留鍵的同時對該數組進行排序。
$data["quxerm"] = 6;
$data["brock"] = 5;
$data["chris"] = 15;
asort($data, SORT_NUMERIC);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.