PHP5. Строковое представление n-мерных массивов. Array to string

Как n-мерный массив представить в виде строки?
Здесь представлена одна из реализаций. В связи с многомерностью была использована рекурсия. А разделителем элементов массива в рабочей строке была принята вертикальная черта - "|". Отсюда не универсальность данного подхода, так как при наличии такого же символа в разбираемом массиве в ключе, в значении или в обоих составляющих, возникает путаница. Поэтому нужно что-то посерьезнее придумать. Это блюдо из быстрой кухни :)
Скачать данный листинг можно здесь - downoad.

<?php ## Перевод n-мерного массива в строковое представление
// Строка для формирования строкового представления массива
$str = "";
// Строковый разделитель-казатель начала массива
$begin = "[";
// Строковый разделитель-указатель окончания массива
$end = "]";
/* Разделитель элементов массива (ключей, значений, вложенных элементов-массивов) в формировании $str */
$separator = "|";

// Тестовый 2-у мерный массив

$massive = array(
                    "first" => "element",
                    "second" => "element",
                    array(
                            "first_1" => "element_1",
                            "second_1" => "element_1",
                            "third_1" => "element_1",
                            "therd_1" => "element_1",
                        ),
                    "third" => "element",
                    array(
                            "first_2" => "element_2",
                            "second_2" => "element_2",
                        ),
                    "2" => "end",                          
                );
      

/* Функция для рекурсивного поиска среди элементов массива вложенных массивов. Передаем рабочую строку $str и элемент с вложенным массивом $temp */          
function searchIn($str, $temp) {  
    $str = "";
    $begin = "[";
    $end = "]";
    $separator = "|";
    // Формируем строковое представление массива
    $str .= $separator;
    $str .= $begin;
    foreach($temp as $key => $value) {
        // Поиск вложенных массивов среди элементов переданного массива
        if(is_array($massive[$key])) {
            /* При наличии вложенных массивов продолжаем поиск вглубь элемента массива.
             Полное погружение обеспечивается за счет рекурсивного вызова исходной функции   searchIn($str, $temp) */
            $str .= searchIn($str, $massive[$key]);
        }
        else {
            $str .= $separator;
            $str .= $key;
            $str .= $separator;
            $str .= $value;
        }
    }
    $str .= $separator;
    $str .= $end;
    // Возвращаем сформированное строковое представление массива
    return $str;  
}

// Формируем строковое представление массива $massive
$str .= $begin;
foreach($massive as $key => $value) {
    // Поиск вложенных массивов среди элементов массива $massive
    if(is_array($massive[$key])) {
        /* При наличии вложенных массивов продолжаем поиск вглубь элемента массива.
        Полное погружение обеспечивается за счет рекурсивного вызова исходной функции searchIn($str, $temp) */
        $str .= searchIn($str, $massive[$key]);
    }
    else {
        $str .= $separator;
        $str .= $key;
        $str .= $separator;
        $str .= $value;
    }
}
$str .= $separator;
$str .= $end;

// Выводим полученное строковое представление $str исходного 2-у мерного массива $massive
echo $str;
?>   


В итоге на столе окажется строчечка следующего вида:

[|first|element|second|element|[|first_1|element_1|second_1|element_1|third_1|element_1|fourth_1|element_1|]|third|element|[|first_2|element_2|second_2|element_2|]|2|end|]