我试图使用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"
}
答案 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);