比如
$array = [
"version" => "1.1",
"connection" => "close",
];
变成
$array = [
"http_version" => "1.1",
"http_connection" => "close",
];
“简单”的方法是:
$arrayPrefix = [];
foreach ($array as $key => $value) {
$arrayPrefix['prefix_' . $key] = $value;
}
$array = $arrayPrefix;
有没有可能用 array_map 之类的函数实现?
array_map
array_walk
array_filter
等都可以实现这样的操作。出发点就是,每个函数有没有自带对数组的遍历。
array_map
有个缺点是需要单独取一次key
,这样增加了代码的复杂度。建议可以使用
array_walk
,然后利用闭包的特性。array_walk
实现代码如下:注意!!!
类似题中的处理,这些方法都有一个特别大的缺点,时间复杂度比
foreach
高。对
foreach
array_walk
array_map
进行基准测试,来说明时间复杂度的差别。结果如下:
我们发现差别几乎是
2 倍
的。所以要考虑一下为什么不用foreach
。基准测试代码如下: