2013-06-05 30 views
1

的一部分我有一個包含文件像這樣=>文件名的數組:順序文件通過名稱

$provider1 = ('dnnbzdas04.txt','haethae09.txt','dhsdshnsd05.txt',...,'zdbtebt03.txt'); 

到Rightmove的文件中的文本文件具有在端部具有「序列」值類似的,

文件確實有不明的文件名,但「序列」始終設置,我需要重新排序陣列,這樣的結果是:

$provider1Ordered = ('hst45ga01.txt','dfa454ba02.txt','zdbtebt03.txt',...,'haethae09.txt'); 

什麼我希望做的是使用sub_str()剝離除了最後的6 ch以外,字符並用它來排列數組。

什麼是娶了新的6個字符有序陣列之前的「RAWDATA」陣列,並責令以同樣的方式最好?

  • 哦是的,隨機字符也包含整數,沒有固定的文件名長度,唯一我有的就是最後的序號。

請任何指針,東西或幫助,我將非常感激。

一切順利,

吉姆

回答

2

你可以用usort做到這一點。例如

$provider1 = array('dnnbzdas04.txt','haethae09.txt','dhsdshnsd05.txt','zdbtebt03.txt'); 

usort($provider1, function($a, $b) { 
    $a = substr($a, -6, 2); 
    $b = substr($b, -6, 2); 
    if ($a == $b) { 
     return 0; 
    } 
    return ($a < $b) ? -1 : 1; 
}); 

print_r($provider1); 

這將輸出:

Array 
(
    [0] => zdbtebt03.txt 
    [1] => dnnbzdas04.txt 
    [2] => dhsdshnsd05.txt 
    [3] => haethae09.txt 
) 
+0

這確實幫助我,我是有點懶,但並創造了新的數組和循環遍歷文件數組時,我使用序列作爲數組索引,這給了我正確的順序的文件,但你的代碼把我放在路徑上 – Jimmyborofan

0

我會做的是根據你的初步設想:

使用已知sorting algorithm,但不是比較的陣列單元的整體價值,確實比較它的「剝離」版本。像往常一樣,「切換」部分可以在整個單元上完成。爲了進行比較,我甚至只關注序列號,不包括擴展名。要小心,雖然這意味着你的序列不會超過99 ...

+0

謝謝,這真是幫了(大約在回答延誤抱歉) – Jimmyborofan

相關問題