PHP 怎么样将 Array 的 key 统一加上前缀 ?
比如
$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 之类的函数实现?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
array_map
array_walk
array_filter
等都可以实现这样的操作。出发点就是,每个函数有没有自带对数组的遍历。
array_map
有个缺点是需要单独取一次key
,这样增加了代码的复杂度。建议可以使用
array_walk
,然后利用闭包的特性。array_walk
实现代码如下:注意!!!
类似题中的处理,这些方法都有一个特别大的缺点,时间复杂度比
foreach
高。对
foreach
array_walk
array_map
进行基准测试,来说明时间复杂度的差别。结果如下:
我们发现差别几乎是
2 倍
的。所以要考虑一下为什么不用foreach
。基准测试代码如下:
大哥,代码不一定要追求函数用的6,你的算法已经非常简洁了.
这个得写代码了
<?php
header('content-type:text/html;charset=utf8');
$array = [
];
foreach ($array as $key => $value)
{
}
var_dump($array);exit;
用另一个数组接收
第一反应是键值翻转再array_map处理 仔细一想值相同会有问题
然后就通过array_combine组合
话说楼上array_map的用法以前确实没用过(大于2个参数)
PS: 汗!!!
好吧楼上就是这样的想法... 不仔细看我还以为是array_map使用了三个参数还专门去看了下文档
PS: 再汗
原来是楼上更新了...
要我说实话吗?上面一个没你的快,你可以试试大一点的数组