{{param1;{param2_array};param3;param4};{param5;{param6_array};param7;param8}}
$data = $array;
list($param1, $param2, $param3, $param4, $param5) = explode(";", $data);
echo $param1;
{{param1;{param2_array;param2_array;param2_array};param3;param4}}
//Отдаем в функцию многомерный массив
function ArraysToString($array) {
//Создаем новый пустой массив для хранения внутренних массивов в виде строк
$newArray = [];
//Создаем переменную равную нулю (поскольку отсчет в массиве с нуля)
$x = 0;
//Запускаем цикл, который выполняется столько раз сколько массивов в массиве(отнимаем единицу потому как количество нам даст значение начиная с единицы, а массив нумеруется с нуля) Условие таково, что пока значение переменной меньше количества массивов в массиве цикл выполняется
while ($x < (count($array)-1)):
//Преобразовываем внутренние массивы и добавляем в наш новый массив
array_push($newArray, implode($array[$x]));
//После преобразования каждого массива увеличиваем нашу переменную на еденицу и запускаем заново (пока не пройдем все элементы массива - как задано в условии)
$x ++;
//Когда условие перестало выполнятся завершаем цикл
endwhile;
//Преобразовываем в строку получившийся одномерный массив
$newArray = implode($newArray);
//Возвращаем результат
return $newArray;
}
function ArraysToString($array) {
$newArray = [];
array_walk_recursive($array function($v) use (&$newArray) {
$newArray[] = $v;
});
$newArray = implode('&', $newArray);
return $newArray;
}