Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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 - Fatal编程技术网

Php 将多维数组转换为列表的最快方法?

Php 将多维数组转换为列表的最快方法?,php,Php,我有以下数组: Array ( [0] => stdClass Object ( [categoryid] => 60 [categoryName] => Parent Category A [categoryParent] => ) [1] => stdClass Object ( [categoryi

我有以下数组:

Array
(
    [0] => stdClass Object
        (
            [categoryid] => 60
            [categoryName] => Parent Category A
            [categoryParent] => 
        )

    [1] => stdClass Object
        (
            [categoryid] => 65
            [categoryName] => Parent Category B
            [categoryParent] => 
        )

    [2] => stdClass Object
        (
            [categoryid] => 68
            [categoryName] => Child Category A
            [categoryParent] => 65
        )

    [3] => stdClass Object
        (
            [categoryid] => 69
            [categoryName] => Super Child Category A
            [categoryParent] => 68
        )
)
我需要这样一个列表:

  • 父类别A
  • 父类别B
    • A类儿童
      • 超级儿童A类
最简单的方法是什么?

函数mylist($a,$parent=''){
function mylist( $a, $parent='') {
   $r = '' ;
   foreach ( $a as $i ) {
       if ($i['categoryParent'] == $parent ) {
          $r = $r . "<li>" . $i['categoryName'] . mylist( $a, $i['categoryid'] ) . "</li>";
       }
   }
   return ($r==''?'':"<ul>". $r . "</ul>");
}
$r=''; foreach($a作为$i){ 如果($i['categoryParent']==$parent){ $r=$r.“
  • ”$i['categoryName'].mylist($a$i['categoryid'])。“
  • ”; } } 回报($r=''?“
      ”$r.
    ”); }
    函数mylist($a,$parent=''){
    $r='';
    foreach($a作为$i){
    如果($i['categoryParent']==$parent){
    $r=$r.“
  • ”$i['categoryName'].mylist($a$i['categoryid'])。“
  • ”; } } 回报($r=''?“
      ”$r.
    ”); }
    我建议保留一个包含父项的数组,并将子项添加到元素自己的数组中。(与您的树相似)

    您可以通过以下示例读取此元素:

    <?php
    BuildList($arrayParent, 0);
    
    function BuildList($arrayElements, $depth)
    {
        foreach($arrayElements as $element)
        {
            echo str_repeat("&nbsp;&nbsp;", $depth) . $element->categoryName;
            $depth++;
            if(count($element->subCategory) > 0)
                $depth = BuildList($element->subCategory, $depth);
    
            return $depth;
        }
    }
    ?>
    

    我建议保留一个包含父项的数组,并将子项添加到元素自己的数组中。(与您的树相似)

    您可以通过以下示例读取此元素:

    <?php
    BuildList($arrayParent, 0);
    
    function BuildList($arrayElements, $depth)
    {
        foreach($arrayElements as $element)
        {
            echo str_repeat("&nbsp;&nbsp;", $depth) . $element->categoryName;
            $depth++;
            if(count($element->subCategory) > 0)
                $depth = BuildList($element->subCategory, $depth);
    
            return $depth;
        }
    }
    ?>
    
    
    
    试试这个:

    function htmlList($array, $parent = null){
        $str = '<ul>';
        foreach($array as $object){
            if(!$parent){
                if(!$object->categoryParent){ 
                    $str .= '<li>' . $object->categoryName;
                    $str .= htmlList($array, $object->categoryid);
                    $str .=  '</li>';
                }
            }
        }
        return $str .= '</ul>';
    }
    
    echo htmlList($yourArray);
    
    函数htmlist($array,$parent=null){ $str='
      '; foreach($array作为$object){ 如果(!$parent){ 如果(!$object->categoryParent){ $str.='
    • 。$object->categoryName; $str.=htmlist($array,$object->categoryid); $str.='
    • '; } } } 返回$str.='
    '; } echo htmlList($yourArray); 试试这个:

    function htmlList($array, $parent = null){
        $str = '<ul>';
        foreach($array as $object){
            if(!$parent){
                if(!$object->categoryParent){ 
                    $str .= '<li>' . $object->categoryName;
                    $str .= htmlList($array, $object->categoryid);
                    $str .=  '</li>';
                }
            }
        }
        return $str .= '</ul>';
    }
    
    echo htmlList($yourArray);
    
    函数htmlist($array,$parent=null){ $str='
      '; foreach($array作为$object){ 如果(!$parent){ 如果(!$object->categoryParent){ $str.='
    • 。$object->categoryName; $str.=htmlist($array,$object->categoryid); $str.='
    • '; } } } 返回$str.='
    '; } echo htmlList($yourArray);
    使用递归foreach循环。我首先要确保您有一个实际的树(即展平它),这将使处理更容易。因此,具有
    categoryParent
    的对象映射为子对象数组。然后使用一个foreach循环,如果存在的话,它会向下抓取每个循环的子循环。使用递归foreach循环。我会首先确保你有一个实际的树(即展平它),这将使它更容易处理。因此,具有
    categoryParent
    的对象映射为子对象数组。然后使用一个foreach循环,如果存在,则向下抓取每个循环的子循环。