0

次の配列があります。

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

これを行う最も簡単な方法は何ですか?

4

3 に答える 3

2

これを試して:

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);
于 2013-03-05T10:06:55.860 に答える
1
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>");
}
于 2013-03-05T09:58:24.133 に答える
0

親アイテムの配列を保持し、要素の独自の配列にサブアイテムを追加することをお勧めします。(あなたの木に似ています)

この要素は、次の例で読み取ることができます。

<?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;
    }
}
?>
于 2013-03-05T10:02:23.370 に答える