Php 导致网页完全空白的递归函数

Php 导致网页完全空白的递归函数,php,menu,multidimensional-array,Php,Menu,Multidimensional Array,我正试图打印一个带有递归函数的菜单。我使用了以下问题中的代码示例: 代码对我来说似乎是正确的,并且语法正确,但结果我得到了一个空白页。没有错误,但是这个php后面的HTML也没有显示。有人有什么想法吗 $connect = mysqli_connect($db_host,$db_user,$db_password,$db_database) or die ("Couldn't connect to server: ".mysqli_error()); $query = "SELECT *

我正试图打印一个带有递归函数的菜单。我使用了以下问题中的代码示例:

代码对我来说似乎是正确的,并且语法正确,但结果我得到了一个空白页。没有错误,但是这个php后面的HTML也没有显示。有人有什么想法吗

$connect = mysqli_connect($db_host,$db_user,$db_password,$db_database)
or die ("Couldn't connect to server: ".mysqli_error());

$query = "SELECT * FROM categories";

$result = mysqli_query($connect,$query)
    or die ("Couldn't execute query: ".mysqli_error());

function menuPrint($categories, $parent = 'root', $level = 0)
{
    $menuList = '<ul>';
    foreach($categories as $index => $category)
    {
      if($category['Parent'] == $parent)
      {
        $menuList .= '<li id="'.$category['ID'].'" class="tier'.$level.'">'.$category['Name'];
        $check = $this->menuPrint($categories, $category['ID'], $level+1);
        if($check != '<ul></ul>')
            $menuList .= $check;
        $menuList .= '</li>';
      }
    }
    return $menuList . '</ul>';
}

$catgories = array();
while ($row = mysqli_fetch_assoc($result)) {
    $categories[] = array(
        'ID' => $row['categoryId'],
        'Name' => $row['categoryName'],
        'Parent' => $row['parentCategory'],
        'Disabled' => $row['disabled']
    );
}
$menu = $this->menuPrint($categories);
echo $menu;

mysqli_close($connect);
$connect=mysqli\u connect($db\u主机,$db\u用户,$db\u密码,$db\u数据库)
或者死亡(“无法连接到服务器:”.mysqli_error());
$query=“从类别中选择*”;
$result=mysqli\u查询($connect,$query)
或者死亡(“无法执行查询:”.mysqli_error());
函数menuPrint($categories,$parent='root',$level=0)
{
$menuList='
    '; foreach($index=>$category的类别) { 如果($category['Parent']==$Parent) { $menuList.='
  • ”.$category['Name']; $check=$this->menuPrint($categories,$category['ID'],$level+1); 如果($check!=“ul>
”) $menuList.=$check; $menuList.=''; } } 返回$menuList。“”; } $catgories=array(); while($row=mysqli\u fetch\u assoc($result)){ $categories[]=数组( 'ID'=>$row['categoryId'], 'Name'=>$row['categoryName'], 'Parent'=>$row['parentCategory'], 'Disabled'=>$row['Disabled'] ); } $menu=$this->menuPrint($categories); echo$菜单; mysqli_close($connect);
您知道问题定位在哪里吗?脚本是否在$menu为空时完成执行?如果您只是删除对
menuPrint()
的递归调用,会发生什么情况,那么它能工作吗?此外,您还可以调用以下方法:
$this->menuPrint(…)
-这是否在对象中?如果是这样的话,那么函数外的代码是什么?如果没有,为什么要使用
$this
?能否发布
var\u dump($categories)
?另外,您在一个地方拼错了变量
$catgories
,这是原始代码中的错误吗?Jakerella-在尝试收集您所有问题的答案时,我解决了这个问题!
$this->
导致问题。我最初修改了上面发布的一篇文章中的一些代码,但没有意识到我已经删除了创建的方法。难怪密码被炸了。没有可调用的方法。我觉得自己很笨。但我真的很高兴你的问题得到了答案。非常感谢。有没有什么方法可以给你带来荣誉?巴尔马-谢谢你!我没有发现拼写错误,这肯定有助于回答问题。当你长时间盯着同一段代码看的时候,一双额外的眼睛是非常有用的。