gpt4 book ai didi

PHP类别树递归

转载 作者:搜寻专家 更新时间:2023-10-31 21:15:36 24 4
gpt4 key购买 nike

我需要通过数组递归来构建类别表。只要深度变深,它就可以正常工作,但一旦深度减小,HTML 输出就会错过表格的开头。

构建数组的 PHP 代码:

       if($query->rowCount() > 0) {
while($result = $query->fetch(PDO::FETCH_OBJ)) {
$tree[] = $result;
}
$childs = array();

foreach($tree as $item) {
$childs[$item->parent_id][] = $item;
}


foreach($tree as $item) {
if (isset($childs[$item->id])) {
$item->childs = $childs[$item->id];
}
}

$tree = $childs[0];
}
else {
// no category blabla
}

这里是建表的函数。它无法正常工作。

    function draw($tree) {
echo "<table border='1' width='300'>";
echo "<tr>";
echo "<td>Name</td><td>Depth</td><td>Parent</td>";
echo "</tr>";
foreach($tree as $key => $value) {
echo "<tr>";
echo "<td>".$value->name."</td>";
echo "<td>".$value->depth."</td>";
echo "<td>".$value->parent_id."</td>";
echo "</tr>";
if(isset($value->childs)) {
draw($value->childs);
}
}
echo "</table>";

}

根据 HTML 输出片段的要求:

<table border='1' width='300'>
<tr>
<td>Name</td>
<td>Depth</td>
<td>Parent</td>
</tr>
<tr>
<td>Bad</td>
<td>5</td>
<td>5</td>
</tr>
<tr>
<td>Good</td>
<td>5</td>
<td>5</td>
</tr>
</table>
<!--- BREAK HAPPENS HERE----->
<tr>
<td>Both?</td>
<td>4</td>
<td>3</td>
</tr>
<table border='1' width='300'>
<tr>
<td>Name</td>
<td>Depth</td>
<td>Parent</td>
</tr>
<tr>
<td>dsadas</td>
<td>5</td>
<td>16</td>
</tr>
</table>

最佳答案

<罢工>这样做:

    echo "<tr><td colspan='3'>";
if(isset($value->childs)) {
draw($value->childs);
}
echo "</td></tr>"

<罢工>

改为这样做:

    if(isset($value->childs)) {
echo "<tr><td colspan='3'>";
draw($value->childs);
echo "</td></tr>"
}

您正在表格主体中创建一个新表格。那是无效的 HTML。你必须把它放在它自己的 TD 中。

关于PHP类别树递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9491271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com