为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 怎么样将 Array 的 key 统一加上前缀 ?

PHP 怎么样将 Array 的 key 统一加上前缀 ?

PHP
料青山看我应如是 2019-03-18 13:16:11
比如 $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 之类的函数实现?
查看完整描述

8 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

大哥,代码不一定要追求函数用的6,你的算法已经非常简洁了.

<?php
$array = [
    "version"    => "1.1",
    "connection" => "close",
];

array_map(function($item)use(&$array){
    $array['http_'.$item] = $array[$item];
    unset($array[$item]);
},array_keys($array));

print_r($array);exit;
查看完整回答
反对 回复 2019-03-18
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

这个得写代码了

查看完整回答
反对 回复 2019-03-18
?
12345678_0001

TA贡献1802条经验 获得超5个赞

<?php
$array = [
    "version"    => "1.1",
    "connection" => "close",
];
$c=array_combine(array_map(function($v){return "http_".$v;},array_keys($array)),array_values($array));
print_r($c);


Array
(
    [http_version] => 1.1
    [http_connection] => close
)


https://img1.sycdn.imooc.com//5c8f5c600001b8c608000329.jpg

查看完整回答
反对 回复 2019-03-18
?
largeQ

TA贡献2039条经验 获得超7个赞

<?php

header('content-type:text/html;charset=utf8');
$array = [

"version"    => "1.1",
"connection" => "close",

];

foreach ($array as $key => $value)
{

$array["http_".$key] = $value;
unset($array[$key]);

}
var_dump($array);exit;

查看完整回答
反对 回复 2019-03-18
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

用另一个数组接收

$array = [
    "version"    => "1.1",
    "connection" => "close",
];
例 :$arr=[];
    $arr["http_version"]=$array["version"];
    $arr["http_connection"]=$array["connection"];
    
    var_dump($arr);
    
    
    $arr = [
        "http_version"    => "1.1",
        "http_connection" => "close",
    ];
查看完整回答
反对 回复 2019-03-18
?
手掌心

TA贡献1942条经验 获得超3个赞

第一反应是键值翻转再array_map处理 仔细一想值相同会有问题
然后就通过array_combine组合
话说楼上array_map的用法以前确实没用过(大于2个参数)

$array = [
    "version"    => "1.1",
    "connection" => "close",
];

$result = array_combine(array_map(function($key){
    return "http_" . $key;
}, array_keys($array)), array_values($array));

print_r($result);

PS: 汗!!!
好吧楼上就是这样的想法... 不仔细看我还以为是array_map使用了三个参数还专门去看了下文档
PS: 再汗
原来是楼上更新了...

查看完整回答
反对 回复 2019-03-18
?
www说

TA贡献1775条经验 获得超8个赞

要我说实话吗?上面一个没你的快,你可以试试大一点的数组

查看完整回答
反对 回复 2019-03-18
  • 8 回答
  • 0 关注
  • 517 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信