首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组的PHP页面结构

数组的PHP页面结构
EN

Stack Overflow用户
提问于 2010-09-10 17:13:31
回答 3查看 264关注 0票数 0

好了,这就是我的问题。我有一个页面结构保存到mysql数据库中。如下所示:

第1页

  • SubPage SubPage 1.2
  • SubPage 1.3

第2页

第3页

该结构可以有无限的页面和子页面。所有页面都有一个名为"url“和"childof”的字段。“childof of”是将一个页面绑定为另一个页面的子页面。

示例:第1页包含"url“page-1,而"childof”为空

SubPage 1.1包含"url“子页面-1-1和”子页面“-1

SubPage 1.1.1具有"url“子页面-1-1-1和”子页面“-1-1

希望你能掌握基本的概念。

我的问题是做一个循环,将所有这些页面放入一个良好的数组中。

获取第一行页面很容易;

代码语言:javascript
复制
$sql = "SELECT * FROM `page` WHERE `childof` = ''
  ORDER BY `id` DESC";
$result = mysql_query($sql);
$i=0;
while ($row = mysql_fetch_assoc($result)) {
 $pages[$i]['id'] = $row['id'];
 $i++;
}

获得第二条线也很容易…

代码语言:javascript
复制
for($x=0; $x < sizeof($pages); $x++){
 $sql = "SELECT * FROM `page` WHERE `childof` = '".$pages[$x]['url']."'
   ORDER BY `id` DESC";
 $result = mysql_query($sql);
 $i=0;
 while ($row = mysql_fetch_assoc($result)) {
  $pages[$x]['children'][$i]['id'] = $row['id'];
  $i++;
 }
}

当然,我也可以这样继续下去。但是,在不知道有多少子页面的情况下这样做效率不是很高。那么,如何创建一个循环来将所有页面和子页面检索到一个具有良好结构的数组中呢?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-10 17:29:47

第一个解决方案是使用递归来检索每个页面的子级。但是,当页面数量变得很大时,这会导致大量的查询,特别是当它们嵌套得很深的时候。

您可能希望将this blog-entry看作是通过一个查询检索所有页面,然后使用映射访问某个页面的子页面。

票数 1
EN

Stack Overflow用户

发布于 2010-09-10 17:19:04

你想用递归来解决这个问题吗?这是我最近用来解决类似问题的一些示例代码

代码语言:javascript
复制
function retrieveFolderChildren($iRoot, &$aChildren, $cMysql)
    {
        if($cStatement = $cMysql->prepare("SELECT folderName, id FROM dir_structure WHERE rootId=? ORDER BY folderName"))
        {
            $cStatement->bind_param('i', $iRoot);
            $cStatement->execute();

            $cStatement->bind_result($sFolderName, $iId);

            while ($cStatement->fetch())
            {
                $aChildren[] = array( "folderName" => $sFolderName, "id" => $iId, "children" => array());
            }

            $cStatement->close();
        }

        foreach ($aChildren as &$aChild)
        {
            retrieveFolderChildren($aChild["id"], $aChild["children"], $cMysql);
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2010-09-10 17:19:46

编辑表,将名为subcat的新字段设置为INT 1= true 0= false

创建ifstatement来查找值,如果是,则转到while循环,否则我猜什么都不做?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3683428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档