例えば:
$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()
);
これより賢いものを思い付くことができません:
$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);
}
a を使用したくない場合は、 orforeach
でコールバックを使用できますが、それでも配列を反復しています。なぜforeachを使わないのですか?array_map
array_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);
使用する機能:
foreach がなければ、そのような方法は提供されないと思います。
foreach ループを使用しないと、文字列を配列のキーと値に分割できるコマンドが PHP に存在しないため、それは不可能だと思います。