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

これより賢いものを思い付くことができません:

$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 に答える
1

a を使用したくない場合は、 orforeachでコールバックを使用できますが、それでも配列を反復しています。なぜforeachを使わないのですか?array_maparray_walk

これを実現するには、explode を 2 回使用する必要があります。最初に全体を分離し、次に全体をキーと値に分割します。

$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 に答える
0

foreach がなければ、そのような方法は提供されないと思います。

于 2012-08-01T08:58:39.140 に答える
0

foreach ループを使用しないと、文字列を配列のキーと値に分割できるコマンドが PHP に存在しないため、それは不可能だと思います。

于 2012-08-01T08:58:55.740 に答える