ホームページ >バックエンド開発 >PHPの問題 >PHP配列をグループ化する方法

PHP配列をグループ化する方法

PHPz
PHPzオリジナル
2023-05-06 09:43:072203ブラウズ

PHP は、特に Web 開発で広く使用されている言語の 1 つで、柔軟性が高く使いやすい言語です。 PHP の配列は、データをグループ化する必要がある場合に非常に便利で実用的なツールです。この記事では、PHP 配列がどのようにグループ化されるかを詳しく見ていきます。

ステップ 1: データを準備する

グループ化操作を実行する前に、データを準備する必要があります。この記事では学生情報管理システムの学生データを利用します。具体的なデータは次のとおりです。

$students = [
    [
        "name" => "张三",
        "gender" => "男",
        "age" => 18,
        "score" => 85,
        "class" => "T1"
    ],
    [
        "name" => "李四",
        "gender" => "女",
        "age" => 19,
        "score" => 80,
        "class" => "T2"
    ],
    [
        "name" => "王五",
        "gender" => "男",
        "age" => 20,
        "score" => 95,
        "class" => "T1"
    ],
    [
        "name" => "赵六",
        "gender" => "女",
        "age" => 18,
        "score" => 70,
        "class" => "T2"
    ],
    [
        "name" => "钱七",
        "gender" => "男",
        "age" => 19,
        "score" => 90,
        "class" => "T1"
    ]
];

上記のデータには、生徒の名前、性別、年齢、学年、クラス情報が含まれます。

ステップ 2: クラスに従ってグループ化する

次に、PHP の array_column 関数を使用して、上記のデータをクラスに従ってグループ化します。 array_column 関数は、多次元配列内の部分配列を取得できます。たとえば、次のコードは、$students 配列から「class」という名前の部分配列を取得します:

$class = array_column($students, 'class');

$class 配列には、すべての学生のクラス情報のみが含まれます。 PHP の array_unique 関数を使用して、一意のクラスを取得できます。これは、学生情報をグループ化するための基礎となります。

$unique_classes = array_unique($class);

すべての一意のクラスのリストを含む配列 $unique_classes を取得したので、foreach ループを使用して配列を反復処理し、新しい多次元配列 $grouped_students を作成して、同じクラスの生徒をグループ化しましょう。情報はサブ配列に格納されます。

$grouped_students = array();
foreach($unique_classes as $class_name){
    $grouped_students[$class_name] = array();
    foreach($students as $student){
        if($student['class'] == $class_name){
            $grouped_students[$class_name][] = $student;
        }
    }
}

上記のコードは、クラスに従ってすべての学生情報をグループ化し、$grouped_students という名前の多次元配列に保存します。これで、var_dump または print_r を使用して $grouped_students 配列を表示し、グループ化が成功したかどうかを確認できるようになりました。出力は次のとおりです。

Array
(
    [T1] => Array
        (
            [0] => Array
                (
                    [name] => 张三
                    [gender] => 男
                    [age] => 18
                    [score] => 85
                    [class] => T1
                )

            [1] => Array
                (
                    [name] => 王五
                    [gender] => 男
                    [age] => 20
                    [score] => 95
                    [class] => T1
                )

            [2] => Array
                (
                    [name] => 钱七
                    [gender] => 男
                    [age] => 19
                    [score] => 90
                    [class] => T1
                )

        )

    [T2] => Array
        (
            [0] => Array
                (
                    [name] => 李四
                    [gender] => 女
                    [age] => 19
                    [score] => 80
                    [class] => T2
                )

            [1] => Array
                (
                    [name] => 赵六
                    [gender] => 女
                    [age] => 18
                    [score] => 70
                    [class] => T2
                )

        )

)

上記の出力は、学生情報をクラスに従って正常にグループ化したことを示しています。

ステップ 3: 他のフィールドに基づいてグループ化する

クラスに加えて、他のフィールドに基づいて学生情報をグループ化することもできます。ここでは、グループ化基準として年齢を使用します。具体的なコードは次のとおりです。

$grouped_students_by_age = array();
foreach($students as $student){
    $grouped_students_by_age[$student['age']][] = $student;
}

上記のコードは、学生の情報を年齢に応じてグループ化し、$grouped_students_by_age という名前の多次元配列に格納します。これで、var_dump または print_r を使用して $grouped_students_by_age 配列を表示し、グループ化が成功したかどうかを確認できるようになりました。出力は次のとおりです。

Array
(
    [18] => Array
        (
            [0] => Array
                (
                    [name] => 张三
                    [gender] => 男
                    [age] => 18
                    [score] => 85
                    [class] => T1
                )

            [1] => Array
                (
                    [name] => 赵六
                    [gender] => 女
                    [age] => 18
                    [score] => 70
                    [class] => T2
                )
        )

    [19] => Array
        (
            [0] => Array
                (
                    [name] => 李四
                    [gender] => 女
                    [age] => 19
                    [score] => 80
                    [class] => T2
                )
            [1] => Array
                (
                    [name] => 钱七
                    [gender] => 男
                    [age] => 19
                    [score] => 90
                    [class] => T1
                )
        )

    [20] => Array
        (
            [0] => Array
                (
                    [name] => 王五
                    [gender] => 男
                    [age] => 20
                    [score] => 95
                    [class] => T1
                )
        )

)

ご覧のとおり、学生情報を年齢に応じてグループ化することができました。

概要

この記事では、PHP 配列を使用してデータをグループ化する方法を紹介しました。学生情報を例として、クラスと年齢別にデータをグループ化しました。これらの操作により、データの管理と処理がより便利になり、コードの効率と可読性が向上します。最後に、読者は他のグループ化方法を試し、実際の開発で PHP 配列の利点を最大限に活用することをお勧めします。

以上がPHP配列をグループ化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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