0

例如:

$sting = 'house : 3 bedroom, car : porsche 911 wife : model';

爆炸:对于行和列,从而形成一个数组

array(

    "house" => "3 bedroom"

    "car" => "porsche 911"

    "wife" => "model"

) 

不必爆炸 foreach 爆炸。

4

5 回答 5

2
$result = array_reduce(
    explode(',', $sting /*[sic!] ;)*/),
    function ($array, $item) {
        list ($key, $value) = explode(':', $item, 2);
        $array[trim($key)] = trim($value);
        return $array;
    },
    array()
);

array_reduce()

于 2012-08-01T09:01:11.183 回答
1

如果您不想使用 a foreach,则可以使用回调 on array_mapor 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);

使用的功能:

于 2012-08-01T08:57:05.913 回答
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);
}
于 2012-08-01T09:05:53.137 回答
0

没有foreach,我认为他们不会提供这样的方法。

于 2012-08-01T08:58:39.140 回答
0

我想这是不可能的,不使用 foreach 循环 - 因为 PHP 中不存在可以将字符串拆分为数组键和值的命令。

于 2012-08-01T08:58:55.740 回答