例如:
$sting = 'house : 3 bedroom, car : porsche 911 wife : model';
爆炸:对于行和列,从而形成一个数组
array(
"house" => "3 bedroom"
"car" => "porsche 911"
"wife" => "model"
)
不必爆炸 foreach 爆炸。
$result = array_reduce(
explode(',', $sting /*[sic!] ;)*/),
function ($array, $item) {
list ($key, $value) = explode(':', $item, 2);
$array[trim($key)] = trim($value);
return $array;
},
array()
);
如果您不想使用 a foreach
,则可以使用回调 on array_map
or array_walk
,但这仍在迭代数组。为什么不直接使用 foreach?
您必须使用两次explode 来实现这一点。首先将整体分开,然后将整体分为键和值:
$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);
使用的功能:
想不出比这更聪明的东西了:
$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);
}
没有foreach,我认为他们不会提供这样的方法。
我想这是不可能的,不使用 foreach 循环 - 因为 PHP 中不存在可以将字符串拆分为数组键和值的命令。