PHP 8.0 で導入array_group_by()
関数指定されたキーまたはコールバック関数に基づいて配列要素をグループ化します。構文は次のとおりです。
array_group_by(array $array, mixed $key_or_callback, bool $preserve_keys = false): array
$array
: グループ化する配列。 $key_or_callback
: 配列キー名またはグループ化キーのコールバック関数を抽出します。 $preserve_keys
: 元のキーを保存するかどうかを指定するオプションのパラメーター。デフォルトは false
です。 $fruits = [ ['name' => 'Apple', 'type' => 'Red'], ['name' => 'Banana', 'type' => 'Yellow'], ['name' => 'Orange', 'type' => 'Orange'], ['name' => 'Mango', 'type' => 'Yellow'], ]; $grouped_by_type = array_group_by($fruits, 'type'); // 输出按类型分组后的数组 print_r($grouped_by_type);
出力:
Array ( [Red] => Array ( [0] => Array ( [name] => Apple [type] => Red ) ) [Yellow] => Array ( [0] => Array ( [name] => Banana [type] => Yellow ) [1] => Array ( [name] => Mango [type] => Yellow ) ) [Orange] => Array ( [0] => Array ( [name] => Orange [type] => Orange ) ) )
array_group_by()
関数に加えて、配列をグループ化する別の方法もあります。適切な方法の選択は、特定の状況によって異なります。
group_by
補助関数を使用できます: function group_by(array $array, string $key): array { $result = []; foreach ($array as $item) { $result[$item[$key]][] = $item; } return $result; }
array_reduce()
関数を使用します。 $grouped_by_type_and_name = array_reduce($fruits, function($result, $item) { $result[$item['type']][$item['name']] = $item; return $result; }, []);
array_column( )
機能: $grouped_by_name = array_column($fruits, null, 'name');
プロジェクトの要件とデータ構造に基づいて、最適なグループ化方法を選択することが重要です。
以上が値関数による PHP 配列のグループ化とベストプラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。