Мне нужно написать функцию, которая преобразует словарь (массив) ['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,
. Не знаю, как поставить скобки и избавиться от лишней запятой.
Также не уверен, что это даже хороший подход, может быть, есть лучший способ.
Вопрос выглядит вдохновленным Как создать строку с разделителями-запятыми из пар ключ-значение ассоциативного массива Также связано: я хочу, чтобы ключ массива и строка значений массива были разделены запятыми
Если вам нужно экспортировать переменную $dict
в виде строки в стандартном/допустимом формате массива, то var_export()
со вторым параметром true
будет достаточно. var_export в строку Это НАМНОГО лучше обрабатывает типы данных, которые не являются просто целыми числами.
Возможно будет лучше использовать функцию json_encode
Я не давал этот ответ, но вряд ли нейтрализую счет. Кажется, это самый профессиональный подход, который я читаю на этой странице.
Вы можете использовать что-то вроде этого
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()
уберите запятую в последней итерации
Такой подход может нарушить целостность данных, если последнее значение в массиве заканчивается одной или несколькими запятыми. Я не могу представить себе какое-либо профессиональное приложение, где этот фрагмент (или даже требования к вопросу) был бы уместным.
Это похоже на проблему XY. Как вы думаете, зачем вам нужны данные в таком формате? Это похоже на форматирование, которое приведет только к будущим головным болям/сожалениям. Объясните, как вы собираетесь использовать эту полезную нагрузку после ее создания.