Преобразовать массив в строку с помощью 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;
}
→ Ссылка