6

私はこれに苦労しています。国と地域を含む配列があります。キーの昇順で両方の情報セットを並べ替えたいと思います。

これが私が扱っている配列です:

Array
(
    [Country] => Array
        (
            [United Kingdom] => Array
                (
                    [London] => Array
                        (
                            [0] => 1
                            [1] => 5
                            [2] => 23
                            [3] => 71
                        )

                    [Manchester] => Array
                        (
                            [0] => 800
                        )

                )

            [United States] => Array
                (
                    [New York] => Array
                        (
                            [0] => 147
                            [1] => 111
                        )

                    [Washington] => Array
                        (
                            [0] => 213
                        )

                    [Florida] => Array
                        (
                            [0] => 6
                        )

                    [Texas] => Array
                        (
                            [0] => 9
                        )

                )

            [Brazil] => Array
                (
                    [Brasília] => Array
                        (
                            [0] => 64
                        )

                )

        )

)

したがって、並べ替えられた配列は次のようになります。

ブラジル
- ブラジリア

イギリス
- ロンドン
- マンチェスター

アメリカ合衆国
- フロリダ
- ニューヨーク
- テキサス
- ワシントン

データ構造は同じままである必要がありますが、数字の順序 (例: London: 1,5,23,71) は同じままでかまいません。

http://php.net/manual/en/array.sorting.phpからいくつかの並べ替え方法を試しました。

しかし、彼らは何もしていないようです。多次元配列であるか、論理的に100%構造化されていないためかもしれませんが、配列をそのまま使用しています。

4

2 に答える 2

4

あなたが試すことができます:

ksort_recursive($data);
print_r($data);

使用する機能

function ksort_recursive(&$array) {
    ksort($array);
    foreach ( $array as &$a ) {
        is_array($a) && ksort_recursive($a);
    }
}

複数の PHP バージョンでのテストを参照してください

于 2013-03-27T20:49:12.167 に答える
2

ステップ 1:
国をキーで並べ替えます。

ksort($arr['Country']);

ステップ 2: 国をループして、それらのキーを並べ替えます。

foreach ($arr['Country'] as $country=>$data) {
    ksort($arr['Country'][$country]);
}
于 2013-03-27T20:48:14.650 に答える