簡體   English   中英

PHP將圖表中的最高編號排序為最低編號

[英]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.

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