【发布时间】:2014-11-19 23:52:44
【问题描述】:
我想替换数组中的所有索引键,但我只需要使用 array_map 之类的函数(而不是 foreach),这就是为什么它对我来说有点困难。
实际数组:
$array = [
'mc_gross' => 10.17,
'protection_eligibility' => 'Eligible',
'address_status' => 'unconfirmed',
'payer_id' => 'STTAC7UV2CVJ4'
];
预期数组:
$array = [
'McGross' => 10.17,
'ProtectionEligibility' => 'Eligible',
'AddressStatus' => 'unconfirmed',
'PayerId' => 'STTAC7UV2CVJ4'
];
我已经有了将第一个字母大写并删除所有'_'的功能:
str_replace(
"_",
"",
implode(
'_',
array_map(
'ucfirst',
explode(
'_',
ucwords(strtolower($key))
)
)
)
);
我试过用array_walk,但是这个函数不能替换索引键,只能替换值...:
array_walk($array, function ($value, &$key) {
$key = str_replace("_", "", implode('_', array_map('ucfirst', explode('_', ucwords(strtolower($key))))));
});
提前感谢您的帮助。
【问题讨论】:
-
PHP Change Array Keys 的可能重复项
-
您是否有什么特别的原因不想使用 foreach 来解决这个问题?
-
@DaOgre 不是真的,我只是想使用 foreach 函数的替代方法。
-
^ 我同意 DaOgre。
foreach-es 简单、易读、可维护,并且可能与您想出的任何东西一样快或更快。但是你,你可以使用array_combine(array_map($yourfunc,array_keys($array)),$array); -
我也同意 DaOgre。为什么你想要用简单的方式来做困难的方式。