Как скопировать эту часть массива в новый массив в php?

У меня есть этот массив PHP X.

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

У меня есть этот массив php Y.

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',
)
)
)

Я хочу скопировать дочерние элементы массива Y в родительский массив массива X, чтобы сформировать массив Z так, чтобы он выглядел следующим образом;

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? Забудьте о моем коде, если есть лучшие подходы.

0

Решение

На самом деле ваш подход тоже работает, но вам нужно перебрать суб-массив:

$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'];
1