2015-09-25 27 views
1

我想要一個函數,從回調提供的鍵和值填充數組,以looplessly重構例如這:解決方案沒有array_map的鍵和值

foreach(array_slice($argv,1) as $arg) 
if(preg_match('~^([^=]*)=([^=]*)$~',$arg,$matches)) $_SERVER[$matches[1]] = $matches[2]; 

什麼是最近的可用?

回答

2
$_SERVER += array_reduce(array_slice($argv, 1), function (array $args, $arg) { 
    return $args + preg_match('~^([^=]*)=([^=]*)$~', $arg, $m) ? [$m[1] => $m[2]] : []; 
}, []); 

這是否是真的比直foreach循環再懂事很值得商榷,但嘿...

0

可能最簡單的方法是使用array_walk來遍歷數組並將結果應用於超全局。

array_walk(array_slice($argv,1), function ($val) { 
    list($key, $value) = explode("=", $val, 2); 
    if (isset($value){ 
     $_SERVER[$key] = $value; 
    } 
}); 

如果你曾經想這樣做針對非超級全局你只需要在回調函數關鍵字後添加use (&$array)

+0

謝謝,但爆炸可以給不同的結果。 – ChrisJJ

相關問題