我正在阅读包含2列的文本文件。名字,等级所以它看起来像这样:
quxerm,6
brock,5
chris,15
所以2d数组看起来像[0] [0] = quxerm和[0] [1] = 6 [1] [0] = brock [1] [1] = 5
我已将它们变成了二维数组,如上所示。
我需要通过整数列按降序对这些值进行排序。我该怎么办呢?
答案 0 :(得分:1)
@ CBergau的答案几乎是完美的,但顺序将是升序而不是降序。 要使其降序,只需切换由usort调用的compare函数的返回值。有关详细信息,请参阅http://www.php.net/manual/en/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/en/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的回答。
答案 1 :(得分:0)
答案 2 :(得分:0)
将数组作为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
你可以通过以下方式检索最大值: -
arr[max][0]//name of max
arr[max][1]//value of max
答案 3 :(得分:0)
$sorted = array();
foreach($yourArray as $a){
$sorted[$a[1]] = $a[0];
}
ksort($sorted);
vardump($sorted);
答案 4 :(得分:0)
这应该按整数列排序:
usort(
$data,
function ($arrayOne, $arrayTwo) {
return ($arrayOne[1] < $arrayTwo[1]) ? -1 : 1;
}
);
答案 5 :(得分:-1)
如果没有重复的名称,您可以简单地为键(名称)指定等级,并在保留键的同时对该数组进行排序。
$data["quxerm"] = 6;
$data["brock"] = 5;
$data["chris"] = 15;
asort($data, SORT_NUMERIC);