猿问

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 之类的函数实现?

料青山看我应如是
浏览 518回答 8
8回答

慕莱坞森

大哥,代码不一定要追求函数用的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;

慕婉清6462132

这个得写代码了

12345678_0001

<?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 )

largeQ

<?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;

蓝山帝景

用另一个数组接收 $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", ];

手掌心

第一反应是键值翻转再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: 再汗原来是楼上更新了...

www说

要我说实话吗?上面一个没你的快,你可以试试大一点的数组
随时随地看视频慕课网APP
我要回答