在PHP中是否有可能在三维上爆炸?

时间:2012-08-01 08:51:51

标签: php arrays explode

例如:

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

爆炸:对于行,对于列,以便形成数组

array(

    "house" => "3 bedroom"

    "car" => "porsche 911"

    "wife" => "model"

) 

不必爆炸foreach爆炸。

5 个答案:

答案 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()
);

array_reduce()

答案 1 :(得分:1)

如果您不想使用foreach,可以在array_maparray_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)

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

答案 4 :(得分:0)

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