PHP で階層分類からすべてのサブノードをフェッチする

PHPで再帰を使用して無限階層分類のすべての子ノードを見つけることができます。以下にサンプルコードを示します。“`phpfunction findAllChildren($category, $parentId, &$result) {
foreach ($category as $cat) {
if ($cat[‘parent_id’] == $parentId) {
$result[] = $cat;
findAllChildren($category, $cat[‘id’], $result);
}
}}// $categoryはすべての分類情報を格納した配列だと想定しています$category = [
[‘id’ => 1, ‘parent_id’ => 0, ‘name’ => ‘カテゴリ1’],
[‘id’ => 2, ‘parent_id’ => 0, ‘name’ => ‘カテゴリ2’],
[‘id’ => 3, ‘parent_id’ => 1, ‘name’ => ‘カテゴリ1-1’],
[‘id’ => 4, ‘parent_id’ => 1, ‘name’ => ‘カテゴリ1-2’],
[‘id’ => 5, ‘parent_id’ => 3, ‘name’ => ‘カテゴリ1-1-1’],
[‘id’ => 6, ‘parent_id’ => 3, ‘name’ => ‘カテゴリ1-1-2’],];$result = [];findAllChildren($category, 1, $result); // idが1のカテゴリのすべての子ノードを検索します// 結果を出力しますforeach ($result as $cat) {
echo $cat[‘name’] . ”;}“`上記のコードでは、まず`findAllChildren`関数を定義します。この関数は3つのパラメータを受け取ります。`$category`はすべての分類情報を含む配列で、`$parentId`は子ノードを検索する分類の親ノードのIDで、`$result`は検索結果を格納する配列です。関数内部ではforeachループを使用してすべての分類情報を反復処理します。ある分類の`parent_id`が検索する親ノードのIDと等しい場合、その分類は結果配列に追加され、`findAllChildren`関数が再帰的に呼び出されてその分類の子ノードが検索されます。最後に、サンプルデータを使用して`findAllChildren`関数を呼び出し、IDが1の分類のすべての子ノードを結果配列に検索し、結果を出力します。注意:上記のコードは参考用であり、実際の使用時には分類データ構造に応じて適切に変更する必要があります。

bannerAds