我想要一个从提供键和值的回调填充数组的函数,以及无循环重构,例如这样:
foreach(array_slice($argv,1) as $arg)
if( preg_match('~^([^=]*)=([^=]*)$~',$arg,$matches)) $_SERVER[$matches[1]] = $matches[2];
最近的可用内容是什么?
答案 0 :(得分:2)
$_SERVER += array_reduce(array_slice($argv, 1), function (array $args, $arg) {
return $args + preg_match('~^([^=]*)=([^=]*)$~', $arg, $m) ? [$m[1] => $m[2]] : [];
}, []);
这是否真的比直接foreach
循环更明智是非常有争议的,但是嘿......
答案 1 :(得分:0)
最简单的方法可能是使用array_walk来遍历数组并将结果应用于超全局。
array_walk(array_slice($argv,1), function ($val) {
list($key, $value) = explode("=", $val, 2);
if (isset($value){
$_SERVER[$key] = $value;
}
});
如果您想要针对非超级全局执行此类操作,则只需在回调中的function关键字后添加use (&$array)
。