PHPを使用してカテゴリIDごとにデータをグループ化し、JavaScriptオブジェクトを生成します
この記事の目的は、PHPを使用してカテゴリIDごとにデータをグループ化する方法を提供し、最終的にはJavaScriptコードに直接埋め込むことができるオブジェクトを生成することを目的としています。 array_reduce関数を使用することにより、生データを必要な形式に効率的に変換できます。これは、フロントエンドのJavaScriptコードを使用するのに便利です。
データの準備
まず、ID、カテゴリ、およびサブカテゴリフィールドを含むデータの配列があるとします。例えば:
$ data = [ ['id' => 1、 'category' => 1、 'subcategory' => 'apple']、 ['id' => 2、 'category' => 1、 'subcategory' => 'orange']、 ['id' => 3、 'category' => 2、 'subcategory' => 'car']、 ['id' => 4、 'category' => 2、 'subcategory' => 'Motorcycle']、 ];
この配列は、データベースクエリまたは他のデータソースの結果を表します。私たちの目標は、この配列をカテゴリフィールドごとにグループ化し、次の形式でJavaScriptオブジェクトを生成することです。
const subkategoris = { 「1」:[ {値:1、desc: "apple"}、 {値:2、desc: "orange"}、 ]、、 「2」:[ {値:3、desc: "car"}、 {値:4、desc: "Motorcycle"}、 ]、、 // ...など };
array_reduceを使用したグループ化
PHPのarray_reduce関数は、アレイを単一の値に減らすために使用できる強力なツールです。ここでは、元のデータの配列をカテゴリごとにグループ化した配列に変換します。
$ result = array_reduce($ data、function($ res、$ item){ $ category = $ item ['category']; $既存= $ $ res [$ category] ?? []; $既存[] = ['値' => $ item ['id']、 'desc' => $ item ['subcategory']]; $ res [$ category] = $既存; $ resを返します。 }、[]); //出力結果print_r($ result);
このコードの説明は次のとおりです。
-
array_reduce($ data、function($ res、$ item){...}、[]):array_reduce関数は3つのパラメーターを受け入れます。
- $データ:処理する元の配列。
- function($ res、$ item){...}:2つのパラメーターを受け入れるコールバック関数:
- $ res:アキュムレータは、各反復で中間結果を保存します。初期値は、3番目のパラメーターで指定されます。
- $ item:現在繰り返されている配列要素。
- []:アキュムレータの初期値、ここに空の配列があります。
$ category = $ item ['category']:現在の配列要素$ itemからカテゴリフィールドの値を抽出します。
$既存= $ $ res [$ category] ?? []:キーとして$カテゴリの要素がアキュムレータ$ resに存在するかどうかを確認します。存在する場合は、既存の$に割り当てます。それ以外の場合は、空の配列を既存の$に割り当てます。 ??条件付き判断を簡素化するために使用されるPHP 7のヌルマージオペレーターです。
$既存[] = ['value' => $ item ['id']、 'desc' => $ item ['subcategory']]:値(value $ item ['id'])とdesc(value $ item ['subcategory'])を含む新しい配列を作成し、既存の配列に追加します。
$ res [$ category] = $既存:キーとして$ categoryを持つアキュムレータ$ resの要素に$既存の配列を割り当てます。
Return $ res:次の反復で使用するためにAccumulator $ resを返します。
このコードを実行した後、$ result変数には以下が含まれます。
配列 ( [1] =>配列 ( [0] =>配列 ( [値] => 1 [DESC] => Apple )) [1] =>配列 ( [値] => 2 [desc] =>オレンジ )) )) [2] =>配列 ( [0] =>配列 ( [値] => 3 [desc] => car )) [1] =>配列 ( [値] => 4 [desc] =>バイク )) )) ))
JavaScriptオブジェクトを生成します
次に、$ resultアレイをJavaScriptオブジェクト文字列に変換する必要があります。 json_encode関数を使用してこれを実現できます。
$ json = json_encode($ result); echo "<script type="'text/javascript'"> \ n"; echo "const subkategoris ="。 $ json。 "; \ n"; echo "</script> \ n";
このコードの説明は次のとおりです。
$ json = json_encode($ result):json_encode関数を使用して、php array $ resultをjson文字列に変換します。
echo "