I search a solution to transform an array to another array. I have this one :
Array
(
[Germany] => Array
(
[0] => Munich
[1] => Frankfurt
)
[France] => Array
(
[0] => Paris
[1] => Marseille
[2] => Lille
[3] => Starsbourg
[4] => Lyon
[5] => Bordeaux
[6] => Toulouse
)
[Spain] => Array
(
[0] => Madrid
[1] => Barcelona
[2] => Valencia
)
)
What is the best way (with array_filter for example, or any other PHP function) to transform it to this please :
Array
(
[0] => Array
(
[value] => Germany
[cities] => Array
(
[0] => Munich
[1] => Frankfurt
)
)
[1] => Array
(
[value] => France
[cities] => Array
(
[0] => Paris
[1] => Marseille
[2] => Lille
[3] => Starsbourg
[4] => Lyon
[5] => Bordeaux
[6] => Toulouse
)
)
[0] => Array
(
[value] => Spain
[cities] => Array
(
[0] => Madrid
[1] => Barcelona
[2] => Valencia
)
)
)
$new_array = array();
foreach ($old_array as $country => $cities)
{
$new_array[] = array(
'value' => $country,
'cities' => $cities
);
}
Should do the job.
You could use array_map
:
$newArray = array_map(function($key, $val){
return array(
'value' => $key,
'cities' => $val
);
}, array_keys($oldArray), $oldArray);