2012-07-14 93 views
0

我有一個目錄列表,我需要排序。到目前爲止natsort運行良好,除非引入小數。 009在009.1之後出現我正在嘗試將所有特殊字符從目錄名稱中取出,並且迄今爲止還沒有出現問題。 「http://10.1.1.1/manual/product/v02/secton 3/part 3.1 leveling/002.jpg」一些長達150左右的char長。由於這些是偶爾小數的長字符串,因此不容易讓它們正確排序。我不相信。用於除小數和文件擴展名以外的任何地方php在PHP中排序長字符串

我讀過的每件東西都忽略了小數。在這種情況下,0200在100之前,我希望那些特別的東西會出現在#和字母之後,但不是。

+0

PHP版本5.2.10 +? – 2012-07-14 04:19:25

+0

稍後更新到PHP 5.3 – Kendrick 2012-07-19 01:01:33

回答

2

鑑於您有任何現有PHP函數無法滿足的排序要求,最好的方法是致電usort()並編寫您自己的比較函數。使用

樣品

function cmp($a, $b) 
{ 
    return strcmp($a, $b); # replace with your own comparison logic 
} 
usort($array, 'cmp'); 
+0

這看起來像內置於php的最佳解決方案,我將最終使用它或更改目錄結構。 9.1 vs 9a放一個字母而不是.1允許natsort按預期工作。 – Kendrick 2012-07-19 00:59:03