Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用类别列出多维数组>;子范畴逻辑_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 使用类别列出多维数组>;子范畴逻辑

Php 使用类别列出多维数组>;子范畴逻辑,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个数组存储根类别的所有子类别,例如: 我只想这样列出它们: A A> B A> B>C A> B>C>E A> B>D A> B>D>F A> B>G A> B>G>H 我的阵列: Array ( [0] => Array ( [id] => 2 [title] => B [sub_category] => Array ( [0] => Array ( [id] => 3 [ti

我有一个数组存储根类别的所有子类别,例如:

我只想这样列出它们:

  • A
  • A> B
  • A> B>C
  • A> B>C>E
  • A> B>D
  • A> B>D>F
  • A> B>G
  • A> B>G>H
我的阵列:

Array (
  [0] => Array (
    [id] => 2
    [title] => B
    [sub_category] => Array (
      [0] => Array (
        [id] => 3
        [title] => C
        [sub_category] => Array (
          [0] => Array (
            [id] => 5
            [title] => E
            [sub_category] => Array ()
          )
        )
      )
      [1] => Array (
        [id] => 4
        [title] => D
        [sub_category] => Array (
          [0] => Array (
            [id] => 6
            [title] => F
            [sub_category] => Array ()
          )
        )
      )
      [2] => Array (
        [id] => 7
        [title] => G
        [sub_category] => Array (
          [0] => Array (
            [id] => 10
            [title] => H
            [sub_category] => Array ()
          )
        )
      )
    )
  )
)
我的函数列表中没有
“>”
,没有父函数,只有标题

以下是我的职能:

function buildTree($tree) {
    foreach ($tree as $node)
    {
        echo '<li>'.$node['title'].'</li>';
        if (!empty($node['sub_category'])) {
            echo '<ul>';
            buildTree($node['sub_category']);
            echo '</ul>';
        }
    }
}

function categoryTree($db, $root_id) {
    $tree = array();
    $sub_categories = $db->get_results('SELECT * FROM categories WHERE parentid="'.$root_id.'"');
    if ($sub_categories) {
        foreach ($sub_categories as $sub_category) {
             $tree[] = array(
                 "id" => $sub_category->id,
                 "title" => $sub_category->title,
                 "sub_category" => categoryTree($db, $sub_category->id)
            );
        }
    }
    return $tree;
}
函数构建树($tree){
foreach($tree作为$node)
{
回显“
  • ”.$node['title']”。
  • ; 如果(!空($node['sub_category'])){ 回声“
      ”; 构建树($node['sub_category']); 回声“
    ”; } } } 函数类别树($db,$root\u id){ $tree=array(); $sub_categories=$db->get_results('SELECT*FROM categories,其中parentid=“.”.$root_id.”); 如果($子类别){ foreach($sub_类别作为$sub_类别){ $tree[]=数组( “id”=>$sub_category->id, “title”=>$sub_category->title, “sub_category”=>categoryTree($db,$sub_category->id) ); } } 返回$tree; }
    问题解决了。这是我的新代码:

    function buildTree($db, $tree) {
        foreach ($tree as $node)
        {
            $header = array();
            $id = $node['id'];
            $can_i_stop = false;
            $has_parent = $db->get_var('SELECT parentid FROM categories WHERE id="'.$node['id'].'"');
            if (!($has_parent == '') && !($has_parent == null)) {
                $seperator = ' > ';
            }else{
                $seperator = '';
            }
            while ($can_i_stop == false) {
                $parent_id = $db->get_var('SELECT parentid FROM categories WHERE id="'.$id.'"');
                if (!($parent_id == '') && !($parent_id == null)) {
                    $parent_title = $db->get_var('SELECT title FROM categories WHERE id="'.$parent_id.'"');
                    array_push($header, $parent_title);
                    $id = $parent_id;
                    $can_i_stop = false;
                }else{
                    $can_i_stop = true;
                }
            }
            echo '<li>'.implode(' > ', array_reverse($header)).$seperator.$node['title'].'</li>';
            if (!empty($node['sub_category'])) {
                echo '<ul>';
                buildTree($db, $node['sub_category']);
                echo '</ul>';
            }
        }
    }
    
    function categorySubTree($db, $root_id) {
        $tree = array();
        $sub_categories = $db->get_results('SELECT * FROM categories WHERE parentid="'.$root_id.'"');
        if ($sub_categories) {
            foreach ($sub_categories as $sub_category) {
                $tree[] = array(
                    "id" => $sub_category->id,
                    "title" => $sub_category->title,
                    "sub_category" => categorySubTree($db, $sub_category->id)
                );
            }
        }
        return $tree;
    }
    
    function categoriesTree($db) {
        $tree = array();
        $categories = $db->get_results('SELECT * FROM categories WHERE is_subcategory=0');
        if ($categories) {
            foreach ($categories as $category) {
                $tree[] = array(
                    "id" => $category->id,
                    "title" => $category->title,
                    "sub_category" => categorySubTree($db, $category->id)
                );
            }
        }
        return $tree;
    }
    
    函数构建树($db,$tree){
    foreach($tree作为$node)
    {
    $header=array();
    $id=$node['id'];
    $can_i_stop=false;
    $has_parent=$db->get_var('SELECT parentid FROM categories,其中id=“”。$node['id'].'”);
    如果(!($has\u parent='')和($has\u parent==null)){
    $separator='>';
    }否则{
    $separator='';
    }
    而($can\u i\u stop==false){
    $parent_id=$db->get_var('SELECT parentid FROM categories,其中id=“.”.$id.”);
    如果(!($parent\u id='')和($parent\u id==null)){
    $parent_title=$db->get_var('SELECT title FROM categories WHERE id=“”.$parent_id.”);
    数组\u push($header,$parent\u title);
    $id=$parent\u id;
    $can_i_stop=false;
    }否则{
    $can_i_stop=true;
    }
    }
    回显“
  • ”。内爆(“>”,数组反向($header))。$separator.$node['title']。
  • ”; 如果(!空($node['sub_category'])){ 回声“
      ”; 构建树($db,$node['sub_category']); 回声“
    ”; } } } 函数类别子树($db,$root\u id){ $tree=array(); $sub_categories=$db->get_results('SELECT*FROM categories,其中parentid=“.”.$root_id.”); 如果($子类别){ foreach($sub_类别作为$sub_类别){ $tree[]=数组( “id”=>$sub_category->id, “title”=>$sub_category->title, “sub_category”=>categorySubTree($db,$sub_category->id) ); } } 返回$tree; } 函数categoriesTree($db){ $tree=array(); $categories=$db->get_results('SELECT*FROM categories,其中是_subcategory=0'); 如果($类别){ foreach($categories作为$category){ $tree[]=数组( “id”=>$category->id, “标题”=>$category->title, “sub_category”=>categorySubTree($db,$category->id) ); } } 返回$tree; }
    请添加实际输入,并发布您尝试的问题解决方案。我们无法猜测您的数据是什么样子,我们也不会从头开始为您构建解决方案。虽然“字符串”>“在您的示例中起作用,因为尖括号对HTML具有特殊意义,我建议使用与右尖括号相对应的HTML实体将该字符串替换为稍微不同的字符串,如下所示:'',这将导致显示右括号字符,而不会有附加任何其他含义的风险。