Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Преобразование имен ключей массива из snake_case в PascalCase с помощью array_map() в PHP

Delphi , Синтаксис , Массивы

Преобразование имен ключей массива из snake_case в PascalCase является распространенной задачей при работе с массивами в PHP. В данном случае пользователь столкнулся с необходимостью изменить стиль именования ключей массива с использованием змеиного регистра (snake_case) на регистр Паскаля (PascalCase), но при этом использовать функцию 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'
];

Пользователь уже имеет функцию для преобразования первого символа в верхний регистр и удаления всех символов подчеркивания. Однако попытка использовать функцию array_walk() не увенчалась успехом, так как она не позволяет изменять ключи массива, только значения.

Подтвержденный ответ:

Если вы не хотите использовать цикл foreach, можно использовать комбинацию функций array_keys(), array_map() и array_combine(), чтобы достичь желаемого результата.

$array = [
    'mc_gross' => 10.17,
    'protection_eligibility' => 'Eligible',
    'address_status' => 'unconfirmed',
    'payer_id' => 'STTAC7UV2CVJ4'
];

// Получаем ключи
$keys = array_keys($array);

// Функция для форматирования ключей
function map($key) {
    return str_replace(' ', '', ucwords(str_replace('_', ' ', $key)));
}

// Применяем функцию к ключам
$keys = array_map('map', $keys);

// Используем array_combine для сопоставления отформатированных ключей с значениями массива
$array = array_combine($keys, $array);

// Выводим результат
var_dump($array);

Этот код должен вывести следующий массив:

array(4){
    ["McGross"]=>
    float(10.17)
    ["ProtectionEligibility"]=>
    string(8) "Eligible"
    ["AddressStatus"]=>
    string(11) "unconfirmed"
    ["PayerId"]=>
    string(13) "STTAC7UV2CVJ4"
}

Пользователь также предложил свой вариант одной строкой:

$array = array_combine(
    array_map(function ($key) {
        return str_replace("_", "", implode('_', array_map('ucfirst', explode('_', ucwords(strtolower($key))))));
    }, array_keys($array)),
    array_values($array)
);

Этот код делает то же самое, что и предыдущий, но в более компактной форме.

Альтернативный ответ:

Также был предложен альтернативный подход с использованием функции array_reduce(), который позволяет функционально пройти по массиву и объединить элементы с измененными ключами в результирующий массив.

Код с использованием array_reduce():

var_export(
    array_reduce(
        array_keys($array),
        function ($result, $k) {
            return $result + [str_replace('_', '', ucwords($k, '_')) => $array[$k]];
        },
        []
    )
);

Этот метод также позволяет достичь желаемого результата, не прибегая к использованию цикла foreach.

В заключение, можно отметить, что существуют различные способы решения поставленной задачи, и выбор конкретного метода зависит от личных предпочтений разработчика и контекста использования.

Создано по материалам из источника по ссылке.

Преобразование имен ключей массива из стиля написания `snake_case` в `PascalCase` в PHP с использованием функции `array_map` и без применения цикла `foreach`.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Массивы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-14 13:22:41/0.0032129287719727/0