Как я могу переместить все узлы массива «fields» в его родительский массив «113», не снимая «поля»?
[a] => Array ( [113] => Array ( [title] => asdfasdfas [alias] => asdfasdfas [fields] => Array ( [jr_streetaddress] => Array ( [type] => text [label] => Street Address [data] => asdfasdffsd ) [jr_towncity] => Array ( [type] => text [label] => Town / City [data] => Nottingham ) ) ) )
Предполагая, что ваш массив верхнего уровня ( $something['a']
) является переменной $a
:
foreach($a as $key => $values){ if(isset($values['fields'])) { $a[$key] = array_merge($a[$key], (array) $values['fields']); unset($a[$key]['fields']); } }
сforeach($a as $key => $values){ if(isset($values['fields'])) { $a[$key] = array_merge($a[$key], (array) $values['fields']); unset($a[$key]['fields']); } }
Кроме того, если вы не хотите ударять по каждому элементу массива в $a
вы можете просто удалить цикл и подставить $values
$a[113]
с помощью $a[113]
и $key
с 113
.
Также обратите внимание на кастинг для элемента полей в массив, jsut в случае, если он не является одним (array) $values['fields']
Если вы можете сделать этот массив следующим образом:
[a] => Array ( [113] => Array ( [title] => asdfasdfas [alias] => asdfasdfas [jr_streetaddress] => Array ( [type] => text [label] => Street Address [data] => asdfasdffsd ) [jr_towncity] => Array ( [type] => text [label] => Town / City [data] => Nottingham ) ) )
попробуйте использовать этот код:
$array['a'][113]['jr_streetaddress'] = $array['a'][113]['fields']['jr_streetaddress']; $array['a'][113]['jr_towncity'] = $array['a'][113]['fields']['jr_towncity']; unset($array['a'][113]['fields']);