1

並べ替えの問題で立ち往生しています。10 個の数字 (1-10) を持つ配列があり、たとえば、10 が 1 の後に来る次の方法で並べ替える必要があります...

望ましい結果

$arr['a1','a10','a2','a3','a4','a5','a6','a7','a8','a9'];

実際の結果

$arr['a1','a2','a3','a4','a5','a6','a7','a8','a9','a10'];

sort($arr);

$arr['a10','a1','a2','a3','a4','a5','a6','a7','a8','a9'];

このタイプの並べ替えの名前や実行方法がわかりません。誰かが私を助けてくれれば幸いです。

注: 数字は文字列の一部です

4

3 に答える 3

6

sort($arr,SORT_STRING)入力を明示的に文字列として扱うようにしてください。

編集:実際の文字列を指定したので、これを試してください:

usort($arr,function($a,$b) {
    $a = explode("=",$a);
    $b = explode("=",$b);
    return $a[0] == $b[0] ? strcmp($a[1],$b[1]) : strcmp($a[0],$b[0]);
});
于 2012-08-03T17:45:08.497 に答える
0

2 番目のパラメーターを使用して、並べ替えの動作を変更できます。

これを試して:

sort($arr, SORT_STRING);
于 2012-08-03T17:54:47.447 に答える
0

確かに、数字ではなくアルファベット順に並べ替えたいと思います。

sort($arr, SORT_STRING);

参照: http://php.net/manual/en/function.sort.php

于 2012-08-03T17:50:03.720 に答える