php重新创建一个新的键和值的数组

I have the following array of keys and values. How can i recreate this array to make the second column as the key and 3rd column the values. Also remove all unwanted spacings.

Array
(
    [16] =>     hasKeyframes    : true
    [17] =>     hasMetadata     : true
    [18] =>     duration        : 30
    [19] =>     audiosamplerate : 22000
    [20] =>     audiodatarate   : 68
    [21] =>     datasize        : 1103197
}

New array should look like this.

Array
(
    [hasKeyframes] => true
    [hasMetadata] => true
    ...
}
$newArray=array();
foreach($array as $value)
{
  $pair=explode(":",$value);
  $newArray[trim($pair[0])] = trim($pair[1]);
}

EDIT

if we have something like [19] => Duration: 00:00:31.03, then we only get 00 for $pair[1]

$newArray=array();
foreach($array as $value)
{
  $pair=explode(":",$value,2);
  $newArray[trim($pair[0])] = trim($pair[1]);
}

My solution uses array_walk() and works from PHP 5.3 because of the anonymous function used.

$array=array(/* ORIGINAL ARRAY */);
$newarray=array();

array_walk($array, function ($v, $k) use (&$newarray) {
    $pos=strpos($v, ':');
    $newkey=substr($v, 0, $pos);
    $newvalue=substr($v, $pos+1);
    $newarray[$newkey]=$newvalue;
});