[英]PHP sort highest number to lowest for chart
我正在創建一個CSS圖表,根據數值列出從最高到最低的項目。 問題是“rsort”似乎只計算前5位數(或者似乎是這樣)。 這導致它顯示的項目高於其他數字低於100,000。 此問題的示例如下:
$ITEM_1 = "95000";
$ITEM_2 = "103000";
..
$item_rank[]= "<li>$ITEM_1 Item 1</li>";
$item_rank[]= "<li>$ITEM_2 Item 2</li>";
..
rsort($item_rank); // sort highest numbers to lowest
echo "<ul>";
echo $item_rank[0];
echo $item_rank[1];
..
echo "</ul>";
在這種情況下,第1項實際上是較低的數字,但它被排名較高,因為任何超過100,000的項目都被處理得更低。 有沒有解決的辦法?
我相信你應該使用natsort() 。 當您嘗試對視為字符串的數字進行排序時會發生這種情 這是一個例子:
$a=array('1a','2a','3a','10a','15a');
rsort($a);
echo implode(',',$a); // outputs 3a,2a,1a,15a,10a
但是你期待這樣的輸出:
15a,10a,3a,2a,1a
為此,請使用natsort和array_reverse() :
$a=array('1a','2a','3a','10a','15a');
natsort($a);
$a=array_reverse($a);
echo implode(',',$a); // outputs 15a,10a,3a,2a,1a
由於$ item_rank數組具有字符串值,因此rsort將按字母順序對其進行排序。 按字母順序反向排序,即使10> 2,“2”也會出現在“10”之前。
您需要為此類排序實現natsort。 檢查 - http://us3.php.net/manual/en/function.natsort.php
來自php.net的例子:
<?php
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
asort($array1);
echo "Standard sorting\n";
print_r($array1);
natsort($array2);
echo "\nNatural order sorting\n";
print_r($array2);
?>
Standard sorting
Array
(
[3] => img1.png
[1] => img10.png
[0] => img12.png
[2] => img2.png
)
Natural order sorting
Array
(
[3] => img1.png
[2] => img2.png
[1] => img10.png
[0] => img12.png
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.