2014-07-14 2 views
0

어떻게 다중 레이어 배열을 반복하고 그 안에있는 연관 값을 바꿀 수 있습니까? 예를 들어다중 레이어 배열을 반복하고 그 안에있는 일부 연관 값을 바꾸는 방법은 무엇입니까?

이이 난 후 오전 결과

function translate ($id){ 
     $items = array(
      0 => array(
       "id" => 1, 
       "title" => "parent 1 en" 
      ), 
      1 => array(
       "id" => 4, 
       "title" => "children 1 en" 
      ), 
      2 => array(
       "id" => 8, 
       "title" => "granchildren 2 en" 
      ) 
     ); 

     foreach($items as $item) { 
      if($id === $item['id']) 
      { 
       return $item['title']; 
      } 
     } 
    } 

function looper ($items){ 

    $new_items = array(); 

    foreach($items as $key => $item) { 
     if(isset($key) && is_array($key)){ 
      $new_items[$key] = translate($item['id']); 
     }else { 
      //looper($item); 
     } 
    } 

    return $new_items; 
} 

print_r(looper ($items)); 

내 배열,

$items = array(
    0 => array( 
     "id" => "1", 
     "title" => "parent 1", 
     "children" => array() 
     ), 
    1 => array( 
     "id" => "2", 
     "title" => "parent 2", 
     "children" => array (
      0 => array( 
      "id" => "4", 
      "title" => "children 1", 
       "granchildren" => array(
        0 => array( 
         "id" => "7", 
         "title" => "granchildren 1" 
        ), 
        1 => array( 
         "id" => "8", 
         "title" => "granchildren 2" 
        ) 
       ) 
      ), 
      1 => array( 
      "id" => "5", 
      "title" => "children 2", 
      "granchildren" => array() 
      ) 
     ), 
     ), 
    3 => array( 
     "id" => "3", 
     "title" => "parent 3", 
     "children" => array() 
     ) 
); 

내가 가지고있는이 두 개의 작업 기능,

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [title] => parent 1 en // translated 
      [children] => Array 
       (
       ) 

     ) 

    [1] => Array 
     (
      [id] => 2 
      [title] => parent 2 
      [children] => Array 
       (
        [0] => Array 
         (
          [id] => 4 
          [title] => children 1 en // translated 
          [granchildren] => Array 
           (
            [0] => Array 
             (
              [id] => 7 
              [title] => granchildren 1 
             ) 

            [1] => Array 
             (
              [id] => 8 
              [title] => granchildren 2 en // translated 
             ) 

           ) 

         ) 

        [1] => Array 
         (
          [id] => 5 
          [title] => children 2 
          [granchildren] => Array 
           (
           ) 

         ) 

       ) 

     ) 

    [3] => Array 
     (
      [id] => 3 
      [title] => parent 3 
      [children] => Array 
       (
       ) 

     ) 

) 

인가이다 가능한거야?

답변

1

array_walk 또는 array_walk_recursive과 같은 소리입니다.
배열의 모든 항목에 대해 사용자 제공 함수를 호출합니다. 참조를 기준으로 배열을 수정하여 사용자가 원하는 것을 얻을 수 있습니다.

관련 문제