例如:
$sting = 'house : 3 bedroom, car : porsche 911 wife : model';
爆炸:对于行,对于列,以便形成数组
array(
"house" => "3 bedroom"
"car" => "porsche 911"
"wife" => "model"
)
不必爆炸foreach爆炸。
答案 0 :(得分:2)
$result = array_reduce(
explode(',', $sting /*[sic!] ;)*/),
function ($array, $item) {
list ($key, $value) = explode(':', $item, 2);
$array[trim($key)] = trim($value);
return $array;
},
array()
);
答案 1 :(得分:1)
如果您不想使用foreach
,可以在array_map
或array_walk
上使用回调,但仍在迭代数组。为什么不直接使用foreach?
你必须使用两次爆炸来实现这一目标。首先要分离entires,然后将entires分成键和值:
$string = 'house : 10 bedroom, car : porsche 911, wife : model';
$elements = explode(',', $string);
array_walk($elements, 'trim');
$goodLife = array();
foreach($elements as $element) {
list($key, $value) = explode(':', $element, 2);
$goodLife[trim($key)] = trim($value);
}
print_r($goodLife);
使用的功能:
答案 2 :(得分:1)
无法想出比这更聪明的东西:
$s = 'house : 3 bedroom, car : porsche 911 wife : model';
$a = preg_split("/[:,]/", $s);
$b = array();
array_unshift($a, false);
while (false !== $key = next($a)) {
$b[$key] = next($a);
}
答案 3 :(得分:0)
答案 4 :(得分:0)
我想这是不可能的,不使用foreach循环 - 因为PHP中没有命令可以将字符串拆分为数组键和值。