爆炸数组并删除前缀

时间:2012-11-13 04:21:48

标签: php arrays multidimensional-array explode

我试图使用explode为字符串创建一个数组。

这是我的字符串:

$string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";

这是我的完整代码:

$string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";
$d = explode(',', $string);
echo '<pre>';
var_dump($d);

之后我得到了这样的结果..

array(7) {
  [0]=>
  string(3) "a:1"
  [1]=>
  string(3) "b:2"
  [2]=>
  string(3) "c:3"
  [3]=>
  string(3) "d:4"
  [4]=>
  string(3) "e:5"
  [5]=>
  string(3) "f:6"
  [6]=>
  string(3) "g:7"
}

如何创建这样的数组?:

array(7) {
  ["a"]=>
  string(1) "1"
  ["b"]=>
  string(1) "2"
  ["c"]=>
  string(1) "3"
  ["d"]=>
  string(1) "4"
  ["e"]=>
  string(1) "5"
  ["f"]=>
  string(1) "6"
  ["g"]=>
  string(1) "7"
}

3 个答案:

答案 0 :(得分:6)

这应该有效:

$arr = array();
$d = explode(',', $string);
for($d as $item){
   list($key,$value) = explode(':', $item);
   $arr[$key] = $value;
}

答案 1 :(得分:6)

<?php 
foreach($d as $k => $v)
{
    $d2 = explode(':',$v);
    $array[$d2[0]] = $d2[1];
}
?>

答案 2 :(得分:1)

这是一个使用循环的简单解决方案:

$string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";
$pairs = explode(',', $string);
$a = array();
foreach ($pairs as $pair) {
    list($k,$v) = explode(':', $pair);
    $a[$k] = $v;
}
var_export($a);

您也可以以更实用的方式执行此操作(在PHP&gt; = 5.3中):

$string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";
$pairs = explode(',', $string);
$items = array_map(
    function($e){
        return explode(':', $e);
    },
    $pairs
);
$a = array_reduce(
    $items,
    function(&$r, $e) {
        $r[$e[0]] = $e[1];
        return $r;
    },
    array()
);

var_export($a);