没有用于键和值的array_map的解决方法

时间:2015-09-25 14:17:03

标签: php

我想要一个从提供键和值的回调填充数组的函数,以及无循环重构,例如这样:

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

最近的可用内容是什么?

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)