2012-12-31 128 views
2

我想对数组进行数值排序,即188,188-1,188-2,222,222-1,222,2等。这就是阵列当前的样子:按键排序数组

[188-1] => Array 
    (
     [time] => 1 
    ) 

[188-2] => Array 
    (
     [time] => 2 
    ) 

[188-3] => Array 
    (
     [time] => 3 
    ) 

[188] => Array 
    (
     [notes] => frog stand notes 
    ) 

[489] => Array 
    (
     [notes] => notes 
    ) 

[489-1] => Array 
    (
     [weight] => 10 
     [reps] => 30 
    ) 

[489-2] => Array 
    (
     [weight] => 20 
     [reps] => 30 
    ) 

[489-3] => Array 
    (
     [weight] => 30 
     [reps] => 30 
    ) 

[492-1] => Array 
    (
     [weight] => 500 
     [distance] => 100000 
    ) 

[492] => Array 
    (
     [notes] => more notes 
    ) 

我已经尝试了ksort,ksort($sorted, SORT_DESC);但它不带连字符键工作也很好,除非我做错了什么?

+0

你可以看看:http://sourcefrog.n​​et/projects/natsort/ –

回答

8

您可以使用uksort()strnatcmp()作为对比功能:

uksort($array, 'strnatcmp'); 
+0

工作了魅力。干杯。 – ditto

+0

演示:http://codepad.org/8rrtecbK –