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でこれの可能な解決策は何ですか教えてください
独自の比較関数を定義し、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);
?>
必要に応じて、より良い比較アルゴリズムについて考えることができます