分层树视图类别并排写入



我有层次分类。我想把它们打印在表格里。我想在表格的每一行写子类别和主类别。

例子:


电子电子比;计算机
电子比;电脑比;附件
电子比;电脑比;配件→鼠标
电子比;电脑比;配件→键盘
化妆品
化妆品>护肤品
化妆品>护肤>护肤霜
化妆品>护肤>皮面具

我尝试了这个函数。但没有成功。

public function getSubCats($Categories)
{
foreach($Categories as $category){
if(count($category->subcategory)){
$this->getSubCats($category->subcategory);
return $category->subcategory;
}else{
return $category->subcategory;
}
}
}

目录数据库表

<表类>idparent_id名称tbody><<tr>1空电子21电脑32附件43键盘5空化妆品65护肤76护肤霜87皮面具

我使用0(零)而不是NULL来确定顶级类别,因为从MySQL获取结果的差异。

where column = 1/2/3/4

where column is NULL

当使用0(0)时,我可以使用相同的预处理语句。

这是我想到的:

function get_cat_by_parent( $pdo, $id ) {
$sql    = "SELECT * FROM stackoverflow.categories WHERE parent_id = ?";
$stmt   = $pdo->prepare( $sql );
try {
$stmt->execute([$id]);
$data   = $stmt->fetchALL( PDO::FETCH_ASSOC );
} catch (PDOException $e ) {
// exception
}
return $data;
}
function recursive( $pdo, $array, $depth, $label ) {
$depth++;
$data   = get_cat_by_parent( $pdo, $array['id'] );
if(count($data)) {
foreach( $data as $row) {
echo $label;
echo " &#x2192; ";
echo $row['name'];
echo "<br />";
recursive( $pdo, $row, $depth, $label . " &#x2192; " . $row['name'] );
}
}
}
$parents    = get_cat_by_parent( $pdo, 0 );
foreach( $parents as $row ) {
echo $row['name'];
echo "<br />";
recursive( $pdo, $row, 0, $row['name'] );
}

输出:

Electronics
Electronics → Computers
Electronics → Accessories
Electronics → Accessories → USB Hub
Electronics → Accessories → Memory Card Readers
Electronics → Accessories → Mic Stand
Electronics → Keyboards
Cosmetics
Cosmetics → Skin Care
Cosmetics → Skin Cream
Cosmetics → Skin Cream → Oil of Olaz
Cosmetics → Skin Cream → Something
Cosmetics → Skin Cream → Other
Cosmetics → Skin Mask

我在你的测试数据中增加了几个类别。

最新更新