ホームページ >バックエンド開発 >PHPチュートリアル >元の第 1 レベルのキーを保持しながら、PHP で特定の列値によって連想配列の行をグループ化するにはどうすればよいですか?

元の第 1 レベルのキーを保持しながら、PHP で特定の列値によって連想配列の行をグループ化するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-30 14:07:50880ブラウズ

How can I group associative array rows by a specific column value in PHP while preserving the original first-level keys?

列の値による連想配列の行のグループ化

連想配列の連想配列が与えられた場合、一般的なタスクは、それらを特定の列でグループ化することです。元の第 1 レベルのキーを維持しながら値を変更します。次の入力配列を考えてみましょう:

[
    'a' => ['id' => 20, 'name' => 'chimpanzee'],
    'b' => ['id' => 40, 'name' => 'meeting'],
    'c' => ['id' => 20, 'name' => 'dynasty'],
    'd' => ['id' => 50, 'name' => 'chocolate'],
    'e' => ['id' => 10, 'name' => 'bananas'],
    'f' => ['id' => 50, 'name' => 'fantasy'],
    'g' => ['id' => 50, 'name' => 'football']
]

私たちの目標は、ID 値に基づいてこれらのサブ配列をグループ化することです:

array
(
    10 => array
        (
            e => array ( id = 10, name = bananas )
        )
    20 => array
        (
            a => array ( id = 20, name = chimpanzee )
            c => array ( id = 20, name = dynasty )
        )
    40 => array
        (
            b => array ( id = 40, name = meeting )
        )
    50 => array
        (
            d => array ( id = 50, name = chocolate )
            f => array ( id = 50, name = fantasy )
            g => array ( id = 50, name = football )
        )
)

PHP を使用してこれを実現するには、次のコードを利用できます。

$arr = array();

foreach ($old_arr as $key => $item) {
   $arr[$item['id']][$key] = $item;
}

ksort($arr, SORT_NUMERIC);

このコードは、まず元の配列を反復処理し、ID と対応するサブ配列を抽出します。次に、このサブ配列を id キーの下の新しい配列に格納し、元の第 1 レベルのキーを保持します。最後に、新しい配列を ID で数値的に並べ替えます。

以上が元の第 1 レベルのキーを保持しながら、PHP で特定の列値によって連想配列の行をグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。