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 Mocucia Artyleria Artyleria
Brachowa W 6 .mp3
9 Walka Duchowa Pas Prawdy.mp3
8 Walka Duchowa Diabelskie Zasadki.mp3
7 Walka duchowa.mp3
2 Walka
duchowa
rozbrojony wrog.mp3 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 diabla .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()13やのようなファイルであっても、探している順序が表示されます13b

数値だけでソートしたくないので、質問は少し悪質です。


<?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

usort を使用します。

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 に答える