2016-10-25 3 views
0

건물 응용 프로그램 오류는 recrusive 함수를 사용하여 데이터베이스에서 패밀리 트리를 표시합니다. 모든 일을 시작하려면 환상적이긴하지만 제 기능은 루프가 더 깊지 않고 루프 childchild입니다. 루프 위의 이미지에 enter image description herephp 재귀 함수가 더 이상 루핑되지 않음

해야합니다 또한 루프 Annie 차일 SteveRex :

내 예입니다.

내 코드 확인 : 여기

<?php 
     $categories = $db->query("SELECT * FROM user"); 
     $data = array(); 

     // build menu 
     function buildTree(array $elements, $parentId = 0) { 
      $branch = array(); 

      foreach ($elements as $element) { 

       if ($element['parent'] == $parentId) { 
        $children = buildTree($elements, $element['id']); 
        if ($children) { 
         $element['children'] = $children; 
        } 
        $branch[] = $element; 
       } 
      } 
      return $branch; 
     } 

     // Child recrusive looping 
     function recrusive_child($childs) { 
      if(isset($childs)) { 
       foreach ($childs as $child) { 
        echo "<li><a href='#'>".$child['username']."</a></li>"; 
       } 
      } 
     } 

     while ($result = $categories->fetch_assoc()) { 
      $data[] = $result; 
     } 

     $tree = buildTree($data); 

     ?> 

    <div class="tree"> 
     <ul> 
      <?php foreach ($tree as $item): ?> 
       <?php if($item['parent'] == null): ?> 
        <li><a href=""><?= $item['username'];?></a> 
         <?php if($item['children']): ?> 
          <ul> 
           <?php recrusive_child($item['children']); ?> 
          </ul> 
         <?php endif; ?> 
        </li> 
       <?php endif; ?> 
      <?php endforeach; ?> 
     </ul> 
    </div> 
</div> 
+5

그게 전부의 재귀 호출 당신의 recursive_chi 때문에 Id는 정말 재귀가 아니며 절대로 스스로를 호출하지 않습니다. – Neat

+0

오른쪽. 내가 확인하고 수정하고 유치원 어린이를 만들어 보자. – Ivan

+0

이제는 잘 작동하지만 문제가있는 아이는 아이 아래에 보이지 않습니다. 이제 모든 것이 인라인입니다! 나는 이것을보고 싶으면 내 CSS와 HTML을 확인해야한다. – Ivan

답변

1

재귀 카테고리 목록을 작성하는 간단한 예입니다

<? 
    function buildTree($parent = 0, $treeArray = '') { 

      if (!is_array($treeArray)) 
      $treeArray = array(); 

      $sql = "SELECT `cid`, `name`, `parent` FROM `category` WHERE 1 AND `parent` = $parent ORDER BY cid ASC"; 
      $query = mysql_query($sql); 
      if (mysql_num_rows($query) > 0) { 
      $treeArray[] = "<ul>"; 
      while ($row = mysql_fetch_object($query)) { 
       $treeArray[] = "<li>". $row->name."</li>"; 
       $treeArray = buildTree($row->cid, $user_tree_array); 
      } 
      $treeArray[] = "</ul>"; 
      } 
      return $treeArray; 
     } 
    ?> 
<ul> 
    <?php 
     $returnedData = buildTree(); 
     foreach ($returnedData as $returnedD) { 
     echo $returnedD; 
     } 
?> 
</ul> 
1

확인 recrusive_child (recursive_child?)

function recrusive_child($childs) { 
      if(isset($childs)) { 
       foreach ($childs as $child) { 
        echo "<li><a href='#'>".$child['username']."</a>"; 
        if ($child['children']){ 
         echo "<ul>"; 
         recrusive_child($child['children']); 
         echo "</ul>"; 
        } 
        echo "</li>"; 
       } 
      } 
     } 
관련 문제