2013-04-10 1 views
2
나는이 형식의 태그가 작업이

:디스플레이는 태그에 의해 분류 목록에서 항목을 태그

Array 
(
    [0] => stdClass Object 
     (
     [task_id] => 10, 
     [task_text] => Mow and fertilize, 
     [tags] => Array 
      (
       [0] => stdClass Object 
        (
        [tag_id] => 1, 
        [tag_text] => House, 
        [tt_tag_id] => 1, //from relational table, tt = task_tag 
        [tt_task_id] => 10, 
        [tt_id] => 20, //auto id from relational table 
        [tt_order] => 0 
       ), 
       [1] => stdClass Object 
        (
        [tag_id] => 2, 
        [tag_text] => Yard, 
        [task_tag_id] => 2, 
        [task_task_id] => 10, 
        [tt_id] => 21, 
        [tt_order] => 1 
       ) 
       [2] => stdClass Object 
        (
        [tag_id] => 5, 
        [tag_text] => Lawn, 
        [task_tag_id] => 5, 
        [task_task_id] => 10, 
        [tt_id] => 22, 
        [tt_order] => 2 
       ) 
      ) 
     ) 
    [1] => stdClass Object 
     (
     [task_id] => 11, 
     [task_text] => Unclog the sink drain, 
     [tags] => Array 
      (
       [0] => stdClass Object 
        (
        [tag_id] => 1, 
        [tag_text] => House, 
        [task_tag_id] => 1, 
        [task_task_id] => 11 
        [tt_id] => 30, 
        [tt_order] => 0 
       ), 
       [1] => stdClass Object 
        (
        [tag_id] => 3, 
        [tag_text] => Kitchen, 
        [task_tag_id] => 3, 
        [task_task_id] => 11, 
        [tt_id] => 31, 
        [tt_order] => 1 
       ) 
      ) 
     ) 
    [2] => stdClass Object 
     (
     [task_id] => 12, 
     [task_text] => Purchase new microwave, 
     [tags] => Array 
      (
       [0] => stdClass Object 
        (
        [tag_id] => 4, 
        [tag_text] => Apartment 1, 
        [task_tag_id] => 4, 
        [task_task_id] => 12 
        [tt_id] => 40, 
        [tt_order] => 0 
       ), 
       [1] => stdClass Object 
        (
        [tag_id] => 3, 
        [tag_text] => Kitchen, 
        [task_tag_id] => 3, 
        [task_task_id] => 12, 
        [tt_id] => 41, 
        [tt_order] => 1 
       ) 
      ) 
     ) 
) 

내가 같은 태그로 작업을 정렬 할 수 있도록하려면를 :

Array 
(
[0] => stdClass Object 
     (
     [tag_id] => 1, 
     [task_text] => House, 
     [child_tags] => Array 
      (
       [0] => stdClass Object 
        (
        [tag_id] => 2, 
        [tag_text] => Yard, 
        [task_tag_id] => 2, 
        [task_task_id] => 10, 
        [tt_id] => 21, 
        [child_tags] => Array 
         (
          [1] => stdClass Object 
           (
            [tag_id] => 5, 
            [tag_text] => Lawn, 
            [task_tag_id] => 5, 
            [task_task_id] => 10, 
            [tt_id] => 22, 
            [task_id] => 10, 
            [task_text] => Mow and fertilize 
          ) 
         ), 
       [1] => stdClass Object 
       (
        [tag_id] => 3, 
        [tag_text] => Kitchen, 
        [task_tag_id] => 3, 
        [task_task_id] => 11, 
        [tt_id] => 31, 
        [task_id] => 11, 
        [task_text] => Unclog the sink drain, 
       ) 
      ) 
     ) 
[1] => stdClass Object 
     (
     [tag_id] => 4, 
     [tag_text] => Apartment 1, 
     [child_tags] => Array 
      (
       [0] => stdClass Object 
        (
        [tag_id] => 2, 
        [tag_text] => Kitchen, 
        [task_tag_id] => 2, 
        [task_task_id] => 10, 
        [tt_id] => 21, 
        [task_id] => 12, 
        [task_text] => Purchase new microwave 
       ) 
      ) 
     ) 
) 

궁극적으로 내가 쏘고있는 것은 다음과 같습니다 :

<ul> 
    <lh>House</lh> 
    <li> 
     <ul> 
     <lh>Kitchen</lh> 
     <li>Unclog the sink drain</li> 
     </ul> 
    </li> 
    <li> 
     <ul> 
     <lh>Yard</lh> 
      <li> 
      <ul> 
       <lh>Lawn</lh> 
       <li>Mow and fertilize</li> 
      </ul> 
      </li> 
     </ul> 
    </li> 
</ul> 
<ul> 
    <lh>Apartment 1</lh> 
    <li> 
     <ul> 
     <lh>Kitchen</lh> 
     <li>Purchase new microwave</li> 
     </ul> 
    </li> 
</ul> 

데이터베이스는 당신이 상상하는 것과 정확히 같습니다. n2n 관계형 테이블이있는 작업 테이블 및 태그 테이블.

작업 및 태그를 반복하여 이러한 방식으로 정렬하는 간단한 방법이없는 것처럼 보입니다. 다른 접근 방법을 시도해야합니까? 이 바보 야?

+1

로까지 레벨 2

  • 반복으로 정렬 나는하지 않는다. 태그에 대한 부모/자식 참조를 확인하십시오. 그런 계층 구조에서 어떻게 가져 오겠습니까? 또한 ''항목은 HTML 사양에 포함되어 있지 않으므로 사용하지 마십시오. –

  • +0

    처음에는 tt_id로 주문하려고했는데 그게 진짜 목적이 아니 었습니다. 그래서 tt_order 열을 추가했습니다. 이것은 태그가 작업과 관련된 순서입니다. 내가 이것을 추가 한 후에 내 해결책에 가까워지고 있을지도 모른다. – DrCorduroy

    답변

    0

    배열을 계층 구조로 구성 할 수 있다면 (즉, 모든 태그를 가져 와서 각 태그에 중첩 된 배열로 작업을 할당하는 경우) 최종 구조의 정렬되지 않은 버전과 유사하게 두 개의 순환 루프를 시도 할 수 있습니다.

    1. 종류, 레벨 1 항목을 가지고() 레벨 1 항목 각각에 대해이
    2. , 그것을 밖으로 인쇄 아래 가장 낮은 수준
    +0

    설명대로 작동하는 재귀 함수를 사용하여 끝냈습니다. – DrCorduroy

    관련 문제