2015-07-21 76 views
0

我有下面的數組,按鍵進行數組排序。

$versions = array 
(
    '0.9.md5' => '/var/www/md5_test/0.9.md5', 
    '1.0.0.md5' => '/var/www/md5_test/1.0.0.md5', 
    '1.0.1.md5' => '/var/www/md5_test/1.0.1.md5', 
    '1.0.2.md5' => '/var/www/md5_test/1.0.2.md5', 
    '1.0.3.md5' => '/var/www/md5_test/1.0.3.md5', 
    '1.0.9.1.md5' => '/var/www/md5_test/1.0.9.1.md5', 
    '1.0.9.10.1.md5' => '/var/www/md5_test/1.0.9.10.1.md5', 
    '1.0.9.10.md5' => '/var/www/md5_test/1.0.9.10.md5', 
    '1.1.3.md5' => '/var/www/md5_test/1.1.3.md5', 
    '1.0.9.2.md5' => '/var/www/md5_test/1.0.9.2.md5', 
    '1.0.9.3.md5' => '/var/www/md5_test/1.0.9.3.md5', 
    '1.0.9.8.md5' => '/var/www/md5_test/1.0.9.8.md5', 
    '1.0.9.9.1.md5' => '/var/www/md5_test/1.0.9.9.1.md5', 
    '1.0.9.9.md5' => '/var/www/md5_test/1.0.9.9.md5', 
    '1.0.9.md5' => '/var/www/md5_test/1.0.9.md5', 
    '1.1.0.md5' => '/var/www/md5_test/1.1.0.md5', 
    '1.1.1.md5' => '/var/www/md5_test/1.1.1.md5', 
    '1.1.2.md5' => '/var/www/md5_test/1.1.2.md5', 
); 

在這陣我想通過按鍵排序這一點。我已搜查,

例如:它應當責令像:1.0.9.md5, 1.0.9.1.md5,.. , 1.0.9.10.md5, 1.0.9.10.1.md5

我已經試過

ksort($versions);

但我便無法得到我想要的東西。

+2

在這種情況下解釋*浮動* –

+0

發佈你的嘗試你嘗試過什麼 –

+0

你試過ksort? –

回答

4

如果這些版本號,和你需要的版本來進行排序,以便1.0.9.2.md5到來之前1.0.9.10.1.md5那麼你需要自定義排序基於語義版本:

uksort($versions, 'version_compare'); 

​​

1

刪除「.md5」 - > ksort() - >再次添加「.md5」。

foreach($versions as $key => $value) { 

    $newKey   = str_replace(".md5", "", $key); 
    $new[$newKey] = $value; 

} 

ksort($new); 

foreach($new as $key => $value) { 

    $newKey   = $key . ".md5"; 
    $result[$newKey]= $value; 

} 

print_r($result); 

結果:

Array 
(
    [0.9.md5] => /var/www/md5_test/0.9.md5 
    [1.0.0.md5] => /var/www/md5_test/1.0.0.md5 
    [1.0.1.md5] => /var/www/md5_test/1.0.1.md5 
    [1.0.2.md5] => /var/www/md5_test/1.0.2.md5 
    [1.0.3.md5] => /var/www/md5_test/1.0.3.md5 
    [1.0.9.md5] => /var/www/md5_test/1.0.9.md5 
    [1.0.9.1.md5] => /var/www/md5_test/1.0.9.1.md5 
    [1.0.9.10.md5] => /var/www/md5_test/1.0.9.10.md5 
    [1.0.9.10.1.md5] => /var/www/md5_test/1.0.9.10.1.md5 
    [1.0.9.2.md5] => /var/www/md5_test/1.0.9.2.md5 
    [1.0.9.3.md5] => /var/www/md5_test/1.0.9.3.md5 
    [1.0.9.8.md5] => /var/www/md5_test/1.0.9.8.md5 
    [1.0.9.9.md5] => /var/www/md5_test/1.0.9.9.md5 
    [1.0.9.9.1.md5] => /var/www/md5_test/1.0.9.9.1.md5 
    [1.1.0.md5] => /var/www/md5_test/1.1.0.md5 
    [1.1.1.md5] => /var/www/md5_test/1.1.1.md5 
    [1.1.2.md5] => /var/www/md5_test/1.1.2.md5 
    [1.1.3.md5] => /var/www/md5_test/1.1.3.md5 
) 
+0

爲什麼? ksort做同樣的事情有無.md5後綴 – Daimos

+0

你確定嗎?不是根據我的測試。 – Emil

+0

我不好,你說得對 – Daimos