0

如何按数字对以下文件进行排序,我的意思是 1 2 3 4...

我使用了sort(), asort(),sort(, sort_numeric)功能,但它不起作用

4 Walka Duchowa Madry Umysl Zamkniety Na Sily Demoniczne.mp3
3 Walka Duchowa Swieci Na Terytorium wroga.mp3
21 Walka Duch Oszczep Modlitwy _08_12_12.mp3
20 Walka Duchowa Oszczep.mp3
5 Walka Duchowa Chrzescijanstwo Ciezko Zbrojna
Duchowa Artyleria.mp3 Moi Walka Duchowa .mp3
9 Walka Duchowa Pas Prawdy.mp3
8 Walka Duchowa Diabelskie Zasadzki.mp3
7 Walka Duchowa.mp3
2 Walka Duchowa Rozbrojony Wrog.mp3
19 Walka Duchowa Oszczep_cz_C.mp3
13 Walka_duchowa Helm Zbawiebia 06_17_12.mp3
12 Walka_duchowa Duchowa
Tarcza Obuwie Pokoju.mp3
10 Walka Duchowa Pancerz Sprawiedliosci.mp3
13b walka duchowa helm zbawienia 06_24_12.mp3
15 walka duchowa miecz ducha 07-01-12.mp3
18 walka duch oszczep modlitwy _07_22_12.mp3
17 walka_duch oszczep modlitwy 07_15_12.mp3
16 Walka duch 16 miecz ducha 07_08_12.mp3
1 walka duchowa niweczenie mocy diabie mocy diabie mocy diabie diocbla .mp3

4

3 回答 3

3

假设你所有的文件都以数字开头,你可以试试这个:

$files = array(
    '4 Walka.mp3',
    '3 Walka.mp3',
    '21 Walka.mp3',
    '5 Walka.mp3'
); // shortened but you get the idea

function mysort($a, $b)
{
    return intval($a) - intval($b);
}

usort($files, 'mysort');

print_r($files);

排序

这个问题的最佳答案已由salathe 发布,请参阅他的答案

于 2012-11-24T12:17:24.077 回答
3

natsort()将给出您正在寻找的顺序,即使是1313b.

这个问题有点曲折,因为您真的不想仅按数字排序。


<?php

$files = explode("\n", trim('
7 Walka Duchowa.mp3
2 Walka Duchowa Rozbrojony Wrog.mp3
13 Walka_duchowa Helm Zbawiebia 06_17_12.mp3
12 Walka_duchowa Tarcza Wiary__06_10_12.mp3
13b Walka Duchowa Helm Zbawienia 06_24_12.mp3
15 Walka Duchowa Miecz Ducha 07-01-12.mp3
'));

natsort($files);
echo implode("\n", $files);

给出以下命令:

2 Walka Duchowa Rozbrojony Wrog.mp3
7 Walka Duchowa.mp3
12 Walka_duchowa Tarcza Wiary__06_10_12.mp3
13 Walka_duchowa Helm Zbawiebia 06_17_12.mp3
13b Walka Duchowa Helm Zbawienia 06_24_12.mp3
15 Walka Duchowa Miecz Ducha 07-01-12.mp3
于 2012-11-24T12:32:48.790 回答
0

使用排序:

function byFirstNumWord($a, $b) {
    $pa = explode(' ',$a);
    $pb = explode(' ',$b);
    if ($pa[0] == $pb[0]) {
        return 0;
    }
    return ($pa[0] < $pb[0]) ? -1 : 1;
}

usort($array, 'byFirstNumWord');
print_t($array);
于 2012-11-24T12:19:52.250 回答