2014-09-17 2 views
0

는 난이 PHP 배열 Y.을 가지고배열의이 부분을 PHP의 새 배열에 복사하는 방법은 무엇입니까?

X= array(
    'Parent' => array(
     'title' => '123', 
    ) 
) 

이것은 PHP 배열 X.를 가지고

Y = array(
    'Parent' => array(
     'id' => '16', 
     'title' => 'T1', 
    ), 
    'Children' => array(
     (int) 0 => array(
      'id' => '8', 
      'serial_no' => '1', 
     ), 
     (int) 1 => array(
      'id' => '9', 
      'serial_no' => '2', 
     ), 
     (int) 2 => array(
      'id' => '14', 
      'serial_no' => '6', 
     ) 
    ) 
) 

I는 어레이 Z 등을 형성하도록 배열 X의 상위에 배열 Y 자손을 복사 할 이런 모습입니다.

Z= array(
     'Parent' => array(
      'title' => '123', 
     ) 
     'Children' => array(
      (int) 0 => array(     
       'serial_no' => '1' 
      ), 
      (int) 1 => array(
       'serial_no' => '2' 
      ), 
      (int) 2 => array(
       'serial_no' => '6' 
      ) 
     ) 
    ) 

는 ID 키 - 값 쌍은 내가 내 자신의 일부 코드를 작성 배열 Y.

의 어린이에서 제거 된 것을 유의하시기 바랍니다.

  $Z = array(); 
      $i=0; 
      foreach($Y as $temp) 
      { 
       $Z['Children'][$i] = $temp['Children'][$i];  
       unset($Z['Children'][$i]['id']; 
       $i++; 
      }  
      $Z['Parent']=$temp['Parent']; 

불행히도 정의되지 않은 색인 오류가 있습니다. PHP에서 어떻게 할 수 있습니까? 더 나은 접근법이 있다면 내 코드를 잊어 버려라.

+2

하지만 ID 키는 하나에서만 제거 요소. 나머지는 현재의 – mithunsatheesh

+0

와우! 당신은 매우 날카 롭다 !! 오타를 바로 잡았습니다. – user781486

답변

1

사실 당신의 접근 방식도 작동하지만 하위 배열을 반복해야합니다 내가 할 수

$Z = array(); 
$i=0; 
foreach($Y['Children'] as $temp) 
{ 
    $Z['Children'][$i] = $temp;  
    unset($Z['Children'][$i]['id']; 
    $i++; 
} 

또는 무엇 :

$Z = $X; 
$Z['Children'] = array(); 
foreach ($Y['Children'] as $child) { 
    $Z['Children'][] = array(
     'serial_no' => $child['serial_no'], 
    ); 
} 
1

같이 할 수 있습니다.

$Z = array(); 
    foreach($Y['Children'] as $temp) 
    { 
     $Z['Children'][] = array('serial_no' => $temp['serial_no']);  
    }  
    $Z['Parent']=$X['Parent']; 
+0

감사합니다. Upvoted. 그러나 올바른 대답으로 하나만 선택할 수 있습니다. 나는 내 코드를 수정 한 다른 답변에 대해서도 공언했다. – user781486

+0

문제는 없습니다. :디 – mithunsatheesh

관련 문제