2017-10-24 9 views
0

다차원 배열을 가지고 있으며 모든 레벨의 모든 항목을 반복하고 'children'과 'attribute_id'가 모두 비어있는 항목을 제거하고 싶습니다 (이 경우 마지막 2 개 항목 56 및 70의 키 사용).다차원 배열을 반복하고 일치하는 항목을 설정 해제

Array 
(
    [11] => Array 
     (
      [page_id] => 11 
      [page_parent_id] => 0 
      [attribute_id] => 8 
      [children] => Array 
       (
       ) 

     ) 

    [12] => Array 
     (
      [page_id] => 12 
      [page_parent_id] => 0 
      [attribute_id] => 
      [children] => Array 
       (
        [49] => Array 
         (
          [page_id] => 49 
          [page_parent_id] => 12 
          [attribute_id] => 
          [children] => Array 
           (
            [50] => Array 
             (
              [page_id] => 50 
              [page_parent_id] => 49 
              [attribute_id] => 32 
              [children] => Array 
               (
               ) 

             ) 

           ) 

         ) 

       ) 

     ) 

    [13] => Array 
     (
      [page_id] => 13 
      [page_parent_id] => 0 
      [attribute_id] => 9 
      [children] => Array 
       (
       ) 

     ) 

    [46] => Array 
     (
      [page_id] => 46 
      [page_parent_id] => 0 
      [attribute_id] => 
      [children] => Array 
       (
        [52] => Array 
         (
          [page_id] => 52 
          [page_parent_id] => 46 
          [attribute_id] => 34 
          [children] => Array 
           (
           ) 

         ) 

        [53] => Array 
         (
          [page_id] => 53 
          [page_parent_id] => 46 
          [attribute_id] => 
          [children] => Array 
           (
            [54] => Array 
             (
              [page_id] => 54 
              [page_parent_id] => 53 
              [attribute_id] => 35 
              [children] => Array 
               (
               ) 

             ) 
            [70] => Array 
             (
              [page_id] => 70 
              [page_parent_id] => 53 
              [attribute_id] => 
              [children] => Array 
               (
               ) 

             ) 

           ) 

         ) 

        [56] => Array 
         (
          [page_id] => 56 
          [page_parent_id] => 46 
          [attribute_id] => 
          [children] => Array 
           (
           ) 

         ) 

       ) 

     ) 

) 

나는 내가 해제 할 항목을 에코 할 수있는 지금까지있어하지만 난 그렇게 내가 실제로 해제 할 수하는 방법을 모르겠어요. 이 같은

function loop($a) { 
    if(empty($a['children'])) 
    { 
     if(empty($a['attribute_id'])) 
     { 
      var_dump($a); 
     } 
    } else { 
     foreach($a['children'] as $v) { 
      loop($v); 
     } 
    } 
} 

foreach($pages as $p) 
{ 
    loop($p); 
} 

답변

1

뭔가 :

function loop($a) { 
    $newArray = array(); 
    foreach ($a as $k => $v) { 
     if (isset($v['children']) && count($v['children']) > 0) { 
      $v['children'] = loop($v['children']); 
     } 

     if ((isset($v['children']) && count($v['children']) > 0) || !empty($v['attribute_id'])) { 
      $newArray[$k] = $v; 
     } 
    } 
    return $newArray; 
} 
$newArray = loop($a); 
관련 문제