Рекурсия. Перебираем исходный массив, если значение является массивом - сохраняем в результирующий массив ключ и преобразованное значение (рекурсивный вызов, он будет здесь, да); в противном случае сохраняем значение как оно есть. Склеиваем содержимое результирующего массива в строку, возвращаем. Вот так:
function getRecursiveStr($arr) {
$result = [];
foreach ($arr as $key => $val) {
if (is_array($val)) {
array_push($result, $key, getRecursiveStr($val));
} else {
$result[] = $val;
}
}
return implode(', ', $result);
}
$arr = [
"Один" => [
"Два" => [
"2.87" => [
"2.88",
"2.89"
],
"Три" => [
"Три с половиной",
"Четыре"
]
]
]
];
echo getRecursiveStr($arr); // выведет "Один, Два, 2.87, 2.88, 2.89, Три, Три с половиной, Четыре"