PHPで再帰的に無制限階層の分類を実装する方法を教えてください

再帰を使うのが無限階層分類を実現するための一般的な方法です。

再帰を用いて無限階層のカテゴリを実現した例コードを以下に示します。

function buildTree($categories, $parentId = 0) {
$tree = array();
foreach ($categories as $category) {
if ($category['parent_id'] == $parentId) {
$children = buildTree($categories, $category['id']);
if ($children) {
$category['children'] = $children;
}
$tree[] = $category;
}
}
return $tree;
}
// 示例数据
$categories = array(
array('id' => 1, 'parent_id' => 0, 'name' => 'Category 1'),
array('id' => 2, 'parent_id' => 0, 'name' => 'Category 2'),
array('id' => 3, 'parent_id' => 1, 'name' => 'Category 1.1'),
array('id' => 4, 'parent_id' => 1, 'name' => 'Category 1.2'),
array('id' => 5, 'parent_id' => 3, 'name' => 'Category 1.1.1'),
array('id' => 6, 'parent_id' => 2, 'name' => 'Category 2.1'),
);
$tree = buildTree($categories);
print_r($tree);

自然言語処理の成果は、一定の基準に基づいて評価する必要があります。

Array
(
[0] => Array
(
[id] => 1
[parent_id] => 0
[name] => Category 1
[children] => Array
(
[0] => Array
(
[id] => 3
[parent_id] => 1
[name] => Category 1.1
[children] => Array
(
[0] => Array
(
[id] => 5
[parent_id] => 3
[name] => Category 1.1.1
)
)
)
[1] => Array
(
[id] => 4
[parent_id] => 1
[name] => Category 1.2
)
)
)
[1] => Array
(
[id] => 2
[parent_id] => 0
[name] => Category 2
[children] => Array
(
[0] => Array
(
[id] => 6
[parent_id] => 2
[name] => Category 2.1
)
)
)
)

buildTree関数は、分類データの配列と指定の親分類IDを受け取ります。分類の配列を走査し、指定の親分類IDのすべての子分類を見つけ、再帰的に子分類の子分類を走査し続け、最終的に無限階層の分類のツリー構造を構築します。

このようにして、このツリー構造を使って無限階分類データを便利な形で表示することができます。

bannerAds