0

natsort() を使用しましたが、思い通りに動作しませんでした。

次のように並べ替えられた配列を表示します。

1) abc 1.0

2) abc 1.1.1

3) abc 1.1

でも私はしたい:

1) abc 1.0

2) abc 1.1

3) abc 1.1.1

それで、PHPでこれの可能な解決策は何ですか教えてください

4

3 に答える 3

0

独自の比較関数を定義し、usortを使用する

<?php
function cmp($a, $b) {
    $a = preg_replace("/[^0-9,.]/", "", $a);
    $b = preg_replace("/[^0-9,.]/", "", $b);

    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}
$arr = array('abc 1.1', 'abc 1.0', 'abc 1.1.1');

usort($arr, "cmp");
print_r($arr);
?>

必要に応じて、より良い比較アルゴリズムについて考えることができます

于 2013-09-28T09:18:56.273 に答える