Я хочу заменить все индексные ключи в массиве, но мне нужно сделать это только с помощью функции array_map (не с foreach), и поэтому для меня это немного сложно.Изменение всех ключей в массиве
Actual массив:
$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, но эта функция не может r eplace index key, only value ...:
array_walk($array, function ($value, &$key) {
$key = str_replace("_", "", implode('_', array_map('ucfirst', explode('_', ucwords(strtolower($key))))));
});
Заранее за вашу помощь.
Возможный дубликат [PHP Change Array Keys] (http://stackoverflow.com/questions/308703/php-change-array-keys) – slapyo
Есть ли конкретная причина, по которой вы не хотите использовать foreach для решения этой проблемы? ? – DaOgre
@DaOgre Не совсем, я просто хочу использовать альтернативу функции foreach. – ZoRo