Преобразование словаря в строку (PHP)

Мне нужно написать функцию, которая преобразует словарь (массив) ['a' => 1, 'b' => 2] в строку '[a => 1, b => 2]'.

Я пытаюсь перебрать массив и просто построить строку из его элементов:

function dictToString(array $dict): string {
    foreach($dict as $key => $value) {
        echo $key . " => " . $value . ", ";
    }
    return "";
}

Тем не менее, я не уверен, как выполнить это хорошо. Я получаю такой вывод: a => 1, b => 2,. Не знаю, как поставить скобки и избавиться от лишней запятой.

Также не уверен, что это даже хороший подход, может быть, есть лучший способ.

Это похоже на проблему XY. Как вы думаете, зачем вам нужны данные в таком формате? Это похоже на форматирование, которое приведет только к будущим головным болям/сожалениям. Объясните, как вы собираетесь использовать эту полезную нагрузку после ее создания.

mickmackusa 20.02.2023 00:29

Вопрос выглядит вдохновленным Как создать строку с разделителями-запятыми из пар ключ-значение ассоциативного массива Также связано: я хочу, чтобы ключ массива и строка значений массива были разделены запятыми

mickmackusa 20.02.2023 00:37

Если вам нужно экспортировать переменную $dict в виде строки в стандартном/допустимом формате массива, то var_export() со вторым параметром true будет достаточно. var_export в строку Это НАМНОГО лучше обрабатывает типы данных, которые не являются просто целыми числами.

mickmackusa 20.02.2023 02:18
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Аутсорсинг разработки PHP для индивидуальных веб-решений
Аутсорсинг разработки PHP для индивидуальных веб-решений
Услуги PHP-разработки могут быть экономически эффективным решением для компаний, которые ищут высококачественные услуги веб-разработки по доступным...
Еще один бенчмарк PHP
Еще один бенчмарк PHP
Сегодня я наткнулся на забавный пост на r/ProgrammerHumor, который заставил меня задуматься об одной вещи, которая меня всегда интересовала....
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Laravel поставляется с мощной функцией под названием "Eloquent Accessors and Mutators".
Настройка PHP-проекта на MacOS: простое руководство для начинающих
Настройка PHP-проекта на MacOS: простое руководство для начинающих
PHP, широко используемый язык сценариев с открытым исходным кодом, необходим для веб-разработки. Его совместимость с MacOS делает его популярным...
Конечные и Readonly классы в PHP
Конечные и Readonly классы в PHP
В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.
0
3
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Возможно будет лучше использовать функцию json_encode

Я не давал этот ответ, но вряд ли нейтрализую счет. Кажется, это самый профессиональный подход, который я читаю на этой странице.

mickmackusa 20.02.2023 00:28
Ответ принят как подходящий

Вы можете использовать что-то вроде этого

function dictToString(array $dict): string {
    $str = '[';
    foreach($dict as $key => $value) {
        $str .= $key . " => " . $value . ", ";
    }
    $str = rtrim($str, ", ");
    $str .= ']';
    return $str;
}

echo dictToString(['a' => 1, 'b' => 2]);

Rtrim() уберите запятую в последней итерации

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

mickmackusa 20.02.2023 00:31

Другие вопросы по теме