Преобразовать массив в строку с помощью composer-пакета
Есть такой массив
$data = [
'payload' => [
'key_1' => 'data-1',
'key_2' => 'data-2',
'key_3' => [
'key_4' => 'data-3'
]
]
];
Нужно преобразовать его в такую строку:
payload[key_1]:data-1
payload[key_2]:data-2
payload[key_3][key_4]:data-3
Это можно сделать через рекурсию. Но я уверен что есть какой-то composer-пакет, который это уже имеет. Пересмотрел довольно много. Можете подсказать какой пакет это умеет?
Ответы (1 шт):
Автор решения: Total Pusher
→ Ссылка
Решил через http_build_query и последующей доработки:
public function transform(array $data): string
{
$ret = http_build_query($data, '', "\n");
$ret = str_replace(['%5B', '%5D', '=', '%3D'], ['[', ']', ':', '='], $ret);
$ret = preg_replace_callback('~^(.*):(.*)$~m', function ($line) {
return sprintf('%s:%s', $line[1], urldecode($line[2]));
}, $ret);
return $ret;
}