PHP を使用した開発プロセスでは、無制限の分類が一般的かつ重要な要件です。使用と操作の便宜のために、通常、無限のカテゴリを配列形式に変換します。ここでは、無限のカテゴリデータを配列形式に変換する方法を示します。
始める前に、無限カテゴリ データの形式を確立する必要があります。一般に、基本的な無限分類データ形式は次のフィールドで構成されます。
たとえば、単純な無限カテゴリ データは次のとおりです。
[ ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1], ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2], ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2], ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3], ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3], ]
再帰関数を定義できます。カテゴリカル データを配列形式に変換します。この関数のコードは次のとおりです。
function categoryToTree($source, $parentId = 0) { $result = []; foreach ($source as $key => $value) { if ($value['pid'] == $parentId) { unset($source[$key]); $children = categoryToTree($source, $value['id']); if (!empty($children)) { $value['children'] = $children; } $result[] = $value; } } return $result; }
再帰を使用して、無限の分類変換を実現します。具体的には、各カテゴリ データについて、まずそれが現在のカテゴリのサブカテゴリであるかどうかを判断します。サブカテゴリである場合は、それを結果配列に追加し、そのサブカテゴリを再帰的に処理します。そうでない場合は、カテゴリをスキップして、次のカテゴリを直接処理します。分類されたデータ。
サブカテゴリを再帰的に処理する場合、$source
配列を渡すことに注意してください。各カテゴリが 1 回だけ処理されるようにするには、処理されたカテゴリ データを $source
配列から削除する必要があります。
上で定義した変換関数を使用すると、無限のカテゴリ データを配列形式に変換できます。たとえば、次のコードを実行します。
$data = [ ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1], ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2], ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2], ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3], ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3], ]; $result = categoryToTree($data); print_r($result);
出力結果は次のとおりです。
Array ( [0] => Array ( [id] => 1 [name] => 电子产品 [pid] => 0 [level] => 1 [children] => Array ( [0] => Array ( [id] => 2 [name] => 手机 [pid] => 1 [level] => 2 [children] => Array ( [0] => Array ( [id] => 4 [name] => 智能手机 [pid] => 2 [level] => 3 ) ) ) [1] => Array ( [id] => 3 [name] => 电脑 [pid] => 1 [level] => 2 [children] => Array ( [0] => Array ( [id] => 5 [name] => 笔记本电脑 [pid] => 3 [level] => 3 ) ) ) ) ) )
ご覧のとおり、無限のカテゴリ データが配列形式に変換され、各カテゴリにはそのカテゴリが含まれています。サブカテゴリ、分類。このようにして、配列関数を使用して無限のカテゴリ データを簡単に処理できます。
以上がPHPで無限のカテゴリカルデータを配列形式に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。