ホームページ >バックエンド開発 >PHPチュートリアル >値関数による PHP 配列のグループ化とベストプラクティス

値関数による PHP 配列のグループ化とベストプラクティス

王林
王林オリジナル
2024-05-04 13:30:011079ブラウズ

PHP 数组按值分组的函数和最佳实践

値による PHP 配列のグループ化関数とベスト プラクティス

array_group_by 関数

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 サイトの他の関連記事を参照してください。

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