2011-03-23 2 views
0

PHP에서 재귀 탐색 메뉴를 작성하여보다 쉽게 ​​구성하고 확장 할 수 있습니다. 당장은 Diablo II의 몇 가지 예제를 사용하여 중첩이 올바르게 작동하도록합니다.예기치 않은 결과를주는 PHP/HTML 중첩 된 탐색 목록

재귀 루핑은 나에게 이상한 결과를 제공합니다. 때로는 배열의 이름/URL과 반대로 하나의 문자 만 반환하며 모든 요소를 ​​통해 반복되지 않습니다.

설명하기가 약간 어렵지만, 내 주요 문제는 이것을 디버깅하는 방법을 정말로 모르겠다는 것입니다. 아마 알아낼 수없는 간단한 무언가 일 것입니다.

은 여기 소스 (구문 강조)와 출력 페이지를 만들어, 모두의 시간을 절약하려면 쉽게 무슨 일이 일어나고 있는지 볼 수 있도록해야한다

http://radleygh.com/files/test/example.php

.

목록의 레이아웃 (같은 LI 요소에 포함 된 각 그룹의 이름과 UL)와 함께 다음과 같아야합니다

ul 
    li 
    Parent Title #1 
    ul 
     li 
     Child Title #1 
     li 
     Child Title #2 
    /ul 
    li 
    Parent Title #2 
/ul 

PS : 거대한 정렬에 대해 갈 수있는 더 나은 방법이 있나요 내가 가지고있는 것과 같은 배열?

감사합니다. 지금 디버깅으로 돌아 가기

답변

0

꽤 가까웠습니다. 실수가있는 곳은 recurse_array 기능입니다. 단일 요소 배열의 요소를 전달하는 것입니다. (기술적으로 다중 차원 인 $element[2]이지만 첫 번째 두 요소는 단일 :)입니다. 따라서이를 잡았을 때 단어가 손상 될 것입니다. 자신의 배열로 밖으로.

이 시도 :

function recurse_array($element) { 
    echo "<ul>\n"; 
    echo " <li>"."<a href='{$element[1]}'>{$element[0]}</a>\n"; 
    if (is_array($element[2])) { 
     echo recurse_array($element[2]); 
    } 
    echo " </li>\n"; 
    echo "</ul>"; 
} 

그것은 당신이 찾고있는 무엇을주고, 또는 당신이 찾고있는 무엇을 조금 더 가까이 적어도 뭔가해야한다.

+0

나는 당신이 의미하는 것을 이해할 수 없지만 "단일 차원 배열"에 대해 계속 생각해 왔습니다. 그리고 나는 그것을 얻었다. 내 배열의 세 번째 요소는 ZERO 또는 ARRAY라고 가정합니다. 레이아웃으로 인해 제 코드가 잘못되었습니다. 세 번째 요소에 대해 여러 배열을 나열했지만 배열의/목록을 자신의 array() 함수 안에 넣지 않았습니다. 그래서 $ element [0] [2] = Array (Array ($ name, $ url, 0), Array ($ name, $ url, 0))처럼 보일 것입니다. 지금 일하고있어. –