我有一个关联数组,key => value其中键是一个数值,但它不是一个连续的数值.密钥实际上是一个ID号,值是一个计数.这对大多数实例都很好,但是我想要一个函数来获取数组的人类可读名称并将其用于键,而不更改值.
我没有看到这样做的函数,但我假设我需要提供旧密钥和新密钥(我都有)并转换数组.有没有一种有效的方法呢?
我想替换数组中的所有索引键,但我只需要使用像array_map这样的函数(不是foreach),这就是为什么它对我来说有点困难.
实际数组:
$array = [
'mc_gross' => 10.17,
'protection_eligibility' => 'Eligible',
'address_status' => 'unconfirmed',
'payer_id' => 'STTAC7UV2CVJ4'
];
Run Code Online (Sandbox Code Playgroud)
预期数组:
$array = [
'McGross' => 10.17,
'ProtectionEligibility' => 'Eligible',
'AddressStatus' => 'unconfirmed',
'PayerId' => 'STTAC7UV2CVJ4'
];
Run Code Online (Sandbox Code Playgroud)
我已经有一个函数将第一个字母大写,并删除所有' _ ':
str_replace(
"_",
"",
implode(
'_',
array_map(
'ucfirst',
explode(
'_',
ucwords(strtolower($key))
)
)
)
);
Run Code Online (Sandbox Code Playgroud)
我试过用array_walk,但是这个函数不能替换索引键,只有值...:
array_walk($array, function ($value, &$key) {
$key = str_replace("_", "", implode('_', array_map('ucfirst', explode('_', ucwords(strtolower($key))))));
});
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
嗨,我有一个像下面的数组.
$arr = Array ( [My_name] => Sam [My_location] => United_Kingdom [My_id] => 1 );
Run Code Online (Sandbox Code Playgroud)
我试图改变密钥
My_name, My_Location, My_id
Run Code Online (Sandbox Code Playgroud)
至
Your_name, Your_Location, Your_id
Run Code Online (Sandbox Code Playgroud)
所以最终的数组看起来像
Array ( [Your_name] => Sam [Your_location] => United_Kingdom [Your_id] => 1 );
Run Code Online (Sandbox Code Playgroud)
我希望像str_replace这样的东西能起作用
$arrnew = str_replace("My","Your",$arr);
Run Code Online (Sandbox Code Playgroud)
但这只是将"我的"改为"你的",如果"我的"是一个值,而不是一个键.
那我该怎么改变钥匙呢?
谢谢你的帮助.