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

时间:2011-06-08 07:58:58

标签: php arrays

我有以下数组的键和值。如何重新创建此数组以使第二列成为键,第三列成为值。同时删除所有不需要的间距。

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

新数组应如下所示。

Array
(
    [hasKeyframes] => true
    [hasMetadata] => true
    ...
}

2 个答案:

答案 0 :(得分:4)

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

修改

  

如果我们有类似[19] =>的内容   持续时间:00:00:31.03,然后我们只   获得$ for $ pair [1]

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

答案 1 :(得分:1)

我的解决方案使用array_walk(),因为使用了匿名函数,所以从PHP 5.3起作用。

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