$sting = 'house : 3 bedroom, car : porsche 911 wife : model';
爆炸的條件:對於行,並且對於列,以形成正是如此
array(
"house" => "3 bedroom"
"car" => "porsche 911"
"wife" => "model"
)
在不具有爆炸在foreach爆炸的陣列。
$sting = 'house : 3 bedroom, car : porsche 911 wife : model';
爆炸的條件:對於行,並且對於列,以形成正是如此
array(
"house" => "3 bedroom"
"car" => "porsche 911"
"wife" => "model"
)
在不具有爆炸在foreach爆炸的陣列。
如果您不想使用foreach
您可以在array_map
或array_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);
功能:
問題是**沒有**使用foreach循環。 – Armin 2012-08-01 08:58:13
@Armin我錯過了。沒有某種形式的迭代就沒有辦法做到這一點。無論是'foreach'還是'array_reduce()','array_walk()'或array_map()'的回調,都需要迭代。 – 2012-08-01 09:04:46
問題是不得不做一個嵌套的foreach,但你縫合有一個。謝謝,看起來它會這樣做。 – 2012-08-01 09:11:07
沒有foreach,我不認爲他們提供了這樣的方法。
嗯,它應該。我現在必須自己動手。 – 2012-08-01 09:09:21
我想這是不可能的,沒有使用foreach循環 - 因爲在PHP中沒有可以將字符串拆分爲數組鍵和值的命令。
我記得有一次我使用了將爆炸陣列轉化爲 $ house =「3 bedroom」的函數; 我不記得它被稱爲。 – 2012-08-01 09:01:43
晴朗的天氣? ^^ – Armin 2012-08-01 09:02:32
$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);
}
'next()'返回'false',無論如何,如果指針總是結束,那麼額外的'false'有什麼好處呢? ('while(($ key = next($ a))&&($ value = next($ a))){$ b [$ key] = $ value;}') – KingCrunch 2012-08-01 09:09:43
生活的美好生活在那裏! – 2012-08-01 08:53:17
我會簡單地使用foreach循環,因爲這是最簡單的方法,並創建最佳的可讀代碼。您可以使用的所有替代命令使此任務變得不必要的複雜。 – Armin 2012-08-01 09:06:32