首页 > 解决方案 > php嵌套函数p

问题描述

你好,我不知道为什么这段代码对我不起作用。我想创建 ul 并且在 ul 内部我想从我的 db 中有一些类别的 li 元素......然后我想用一些 li 元素创建另一个 ul foreach li 元素,其中包含我的 db 中的子类别。当我在索引页面中调用 selectareCategorii() 时,我首先看到这一行的元素 $this->selectareSubcategorii($categorii["id_categorie"]) 所以从第二个函数然后是第一个函数的元素,我不知道为什么。

公共函数 selectareCategorii() {

         $query = mysqli_query($this->con,"SELECT * FROM categorii");
         while($categorii = mysqli_fetch_array($query)) {
            echo "<ul>
                <li>$categorii[nume_categorie]".

                $this->selectareSubcategorii($categorii["id_categorie"])
                ."</li>
                  </ul>";



         }

     }
     private function selectareSubcategorii($id) {
         $query = mysqli_query($this->con, "SELECT * FROM subcategorie WHERE categorie_id ='$id'") OR die(mysqli_error($this->con));
         while($subcategorii = mysqli_fetch_array($query)) {
            echo "<li>$subcategorii[subcategorie_nume]</li>";
             $this->selectareSubcategorii1($subcategorii['subcategorie_id']);
         }
     }

我想要这个结果`

我在我的页面中得到的结果是:

  • 从第二个功能-> selectareSubcategorii($id)
  • `

    所以我不明白为什么第二个函数首先运行然后第一个函数运行的内容......在我的脑海中:) 我认为第一个函数运行的内容然后找到 $this->selectareSubcategorii($categorii["id_categorie"])并运行该函数的内容,然后返回并运行第一个函数的最后几行代码

    标签: php

    解决方案


    要执行您想要的操作,您需要保存id_categorie第一个循环中的所有值,然后使用这些值调用selectareSubcategorii(). 尝试这个:

    $query = mysqli_query($this->con,"SELECT * FROM categorii");
    $id_categorie = array();
    echo "<ul>";
    while($categorii = mysqli_fetch_array($query)) {
        echo "<li>$categorii[nume_categorie]</li>";
        $id_categorie[] = $categorii["id_categorie"];
    }
    foreach ($id_categorie as $id) {
        $this->selectareSubcategorii($id);
    }
    echo "</ul>";
    

    推荐阅读