PHP:转换多维数组

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);