2012-09-08 3 views
4

내가은 (목록) 배열을 가져 무제한 UL 리튬 태그를 만들

내 배열 (인출) PDO의 내 배열 결과에서 무제한 목록 사용 리 및 UL 태그를 만들려고 해요 :

catLevel1 
catLevel2 
    catLevel3 
    catLevel4 
catLevel1 
catLevel1 
catLevel2 
catLevel2 

난 변환하는 기능을했다 :

Array ( 
[0] => Array ([category_label] => catLevel4 [category_id] => 22 [category_owner] => 21) 
[1] => Array ([category_label] => catLevel3 [category_id] => 21 [category_owner] => 20) 
[2] => Array ([category_label] => catLevel2 [category_id] => 23 [category_owner] => 8) 
[3] => Array ([category_label] => catLevel2 [category_id] => 24 [category_owner] => 8) 
[4] => Array ([category_label] => catLevel2 [category_id] => 20 [category_owner] => 6) 
[5] => Array ([category_label] => catLevel1 [category_id] => 6 [category_owner] => 0) 
[6] => Array ([category_label] => catLevel1 [category_id] => 7 [category_owner] => 0) 
[7] => Array ([category_label] => catLevel1 [category_id] => 8 [category_owner] => 0) 
) 

내가 원하는

,451,515,
function getCategory($parentCategoryId,$data) 
{ 
    foreach($data as $row){if($row['category_owner']==$parentCategoryId){?> 
    <li catId='<?php echo $row['category_id']?>'><a><?php echo $row['category_label'];?></a> 
      <ul> 
      <?php getCategory($row['category_id'],$data) ;?> 
      </ul> 
    </li> 
    <?php };} 
} 

echo getCategory(0,$this->categorysList); 

이 기능은, 나를 위해 작업 그러나 모든 항목에 대한 <ul></ul>을 널 생성 매우 좋다! 모든 반복에 D

+0

이유는 지난 4 출력은'catlevel1 될 수 없다 -> catlevel2 | catlevel1 -> catlevel2'? – hjpotter92

+0

@GiantofaLannister는 'category_owner'가 일치하지 않기 때문에 발생합니다. 그것은 이상한 일이지만, 그것이 무엇인지입니다. –

+0

무제한 만들기 범주 목록 –

답변

2

어떤 검사없이 하드 코딩 때문에 당신은 널 (null) <ul> 태그를 얻을, 출력,

나는 당신의 표준 기능을 구축하는 데 도움을 주셔서 감사합니다. 이런 식으로 뭔가를 시도 :

<?php 

function getCategory($parentCategoryId, $data) { 
    foreach ($data as $row) { 
     if ($row['category_owner'] == $parentCategoryId) { 
      $str .= ' 
<li catId="' . $row['category_id'] . '"><a>' . $row['category_label'] . '</a>' . "\n"; 
      $res = getCategory($row['category_id'], $data); 
      if ($res) { 
       $str .= ' 
    <ul>' . $res . '</ul> 
    ' . "\n"; 
      } 
      $str .= ' 
</li>' . "\n"; 
     } 
    } 
    return $str; 
} 

$str = getCategory(0, $data); 
echo $str; 

?> 

그래서이 같은 출력을 얻을 :

<li catId="6"> 
    <a> catLevel1</a> 
    <ul> 
     <li catId="20"> 
      <a> catLevel2</a> 
      <ul> 
       <li catId="21"> 
        <a> catLevel3</a> 
        <ul> 
         <li catId="22"> 
          <a> catLevel4</a> 
         </li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</li> 
<li catId="7"> 
    <a> catLevel1</a> 
</li> 
<li catId="8"> 
    <a> catLevel1</a> 
    <ul> 
     <li catId="23"> 
      <a> catLevel2</a> 
     </li> 
     <li catId="24"> 
      <a> catLevel2</a> 
     </li> 
    </ul> 
</li> 
관련 문제