按数字键对数组进行排序

dit*_*tto 2 php arrays array-key ksort

我想以数字方式对数组进行排序,即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
    )
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一个ksort,ksort($sorted, SORT_DESC);但是对于带连字符的密钥它不能很好地工作,除非我做错了什么?

And*_*eKR 8

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

uksort($array, 'strnatcmp');
Run Code Online (Sandbox Code Playgroud)