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

王林
リリース: 2024-05-04 13:30:01
オリジナル
954 人が閲覧しました

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!