代码之家  ›  专栏  ›  技术社区  ›  Snappysites

PHP类别递归和数组不显示所有结果

  •  0
  • Snappysites  · 技术社区  · 3 年前

    我使用的类别系统有父类别,可以有多个子类别,也可以有子类别等等…我正在尝试使用一个脚本,该脚本将使用当前选定的类别ID,并将其所有子ID和子ID等添加到数组中。递归工作得很好,因为当我用回显名称/ID来测试它时,它会显示所有名称。尽管数组似乎只显示在第一组子类别中,而不再显示。

    类别数据库类似于此:

    cat_id     cat_name      cat_parent_id
    123        parent1       0
    456        child1        123
    789        child2        123
    101112     child3        123
    131415     childa1       456
    161718     childa2       456
    192021     childb1       789
    222324     childb2       789
    

    我当前的代码如下:

    $childCatsArray = array();
    $catsArray = hasChildren($catID, $childCatsArray);
    
    
    function hasChildren($catID, $array) {
    
        global $conn;
        
        
        $sql = "SELECT * FROM `SysCategories` WHERE `cat_parent_id` = ?;";
    
        $stmt = mysqli_stmt_init($conn);
        // bind integer value $parent_id
                
        if(!mysqli_stmt_prepare($stmt, $sql)){
            echo 'SQL ERROR 2';
            return;
        }
                                        
        mysqli_stmt_bind_param($stmt, "s", $catID);
                                        
        mysqli_stmt_execute($stmt);
        $resultData = mysqli_stmt_get_result($stmt);
        while($child = mysqli_fetch_assoc($resultData)){
            $child_cat_id = $child['cat_id'];
            $child_cat_name = $child['cat_name'];
            
            array_push($array, $child_cat_id);
            hasChildren($child_cat_id, $array);
            
        }
        
        return $array;
    }
    

    无论我如何定位代码的部分,我似乎只能将第一组子类别添加到数组中,而不能将整个集合添加到数组,我不知道为什么,例如,它会返回以下内容:

    Array ( [0] => 123 [1] => 456 [2] => 789 [3] => 101112 )
    

    任何帮助都会得到通知。

    1 回复  |  直到 3 年前