gpt4 book ai didi

php - 不重复的递归阅读

转载 作者:行者123 更新时间:2023-11-29 03:26:33 24 4
gpt4 key购买 nike

我正在尝试创建一个函数,从 db 中读取许多 (page_id,page_title),我将其递归。 Function 应该使缩进嵌套的 UL-s 像所有现有页面的树一样,并且正在这样做。当我尝试从递归循环中消除重复时,问题就开始了。出于某种原因,in_array 没有正常工作,或者我遗漏了一些东西。我在 PHP5.5.1.2 上工作。任何人都知道这里的问题是什么?我现在的代码:

function nav($page_set,$pages,$count){
echo "<ul>";
while ($page = mysqli_fetch_array($page_set)) {
if(!in_array($page['page_id'],$pages)){
echo "<li><a href=\"content.php?page=" . urlencode($page['page_id']) . "\">{$page["page_title"]}</a></li>";
if (!is_null(get_pages($page['page_id'])))
{
$pages[$count]=$page['page_id'];
$count++;
nav(get_pages($page['page_id']),$pages,$count);
}
}
}
echo "</ul>";
}

function get_pages($page_id){
global $connection;
$query = "SELECT page.page_id, page.page_parent, page.page_meny_position, page_lang_content.page_title FROM page JOIN page_lang_content ON page.page_id=page_lang_content.page_id ";
if (isset($page_id))
{
$query .= " WHERE page.page_parent = ".$page_id;
}
$query .= " ORDER BY `page`.`page_id` ASC ";
$page_set = mysqli_query($connection,$query);
confirm_query($page_set);
return $page_set;
}

AND函数调用:

<?php echo nav(get_pages(NULL),$pages=array(),$count=0)?>

最佳答案

我没有对此进行测试,但我假设您仍然会得到重复项,因为您实际上并未将所有 page_id 存储在 $pages 变量中,以便所有已处理的 page_id 在所有递归回合中都可用。您需要在递归中返回 $pages 数组以确保它包含所有处理后的值(我还删除了计数值,因为它似乎没有任何意义):

function nav($page_set,$pages)
{
echo "<ul>";
while ($page = mysqli_fetch_array($page_set))
{
if(!in_array($page['page_id'],$pages))
{
echo "<li><a href=\"content.php?page=" . urlencode($page['page_id']) . "\">{$page["page_title"]}</a></li>";
if (!is_null(get_pages($page['page_id'])))
{
$pages[]=$page['page_id'];
$pages = nav(get_pages($page['page_id']),$pages);
}
}
}
echo "</ul>";
return $pages;
}

同样修改了函数调用

<?php echo nav(get_pages(NULL),$pages=array())?>

关于php - 不重复的递归阅读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35309331/

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