0

ソートされていない外部インデックスを持つこのような配列を取得しました。

$a = array(
             (1) => array(1, 2, 3, 0, 5, 4),
             (0) => array(2, 1, 5, 0, 3, 4)
         );
echo "<br/>Before Sorting: ";
print_r($a);
foreach($a as $b)
  array_multisort($b, SORT_ASC, SORT_NUMERIC);
echo "<br/>After Sorting: ";
print_r($a);

以下のような出力が得られます

ソート前:

Array
(
    [1] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 0
            [4] => 5
            [5] => 4
        )

    [0] => Array
        (
            [0] => 2
            [1] => 1
            [2] => 5
            [3] => 0
            [4] => 3
            [5] => 4
        )

)

並べ替え後:

Array
(
    [1] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 0
            [4] => 5
            [5] => 4
        )

    [0] => Array
        (
            [0] => 2
            [1] => 1
            [2] => 5
            [3] => 0
            [4] => 3
            [5] => 4
        )

)

そして私が欲しいのは

$a = array(
              (0) => array(2, 1, 5, 0, 3, 4),
              (1) => array(1, 2, 3, 0, 5, 4)

          );

対処法を教えてください........

4

2 に答える 2

5

ksortを使用するのはどうですか(配列をキーで並べ替える必要があるため)。

$a = array(
  1 => array(1, 2, 3, 0, 5, 4),
  0 => array(2, 1, 5, 0, 3, 4)
);
echo "<br/>Before Sorting: ";
print_r($a);

ksort($a);
echo "<br/>After Sorting: ";
print_r($a);
于 2012-09-12T12:33:22.417 に答える
1

トップレベルのインデックスのみでソートしたいので、マルチソートを使用する必要はありません。ループすら必要ありません。

これを試して:

$a = array(
             (1) => array(1, 2, 3, 0, 5, 4),
             (0) => array(2, 1, 5, 0, 3, 4)
         );

ksort($a);

print_r($a);

あなたが望むものをあなたに与えるべきです。

詳細については、 http://www.php.net/manual/en/function.ksort.phpを参照してください。

于 2012-09-12T12:37:29.123 に答える