Recorrido de matriz dinámica en PHP

Quiero construir una jerarquía a partir de una matriz unidimensional y puedo (casi) hacerlo con un código más o menos codificado. ¿Cómo puedo hacer que el código sea dinámico?

Tal vez conwhile(isset($array[$key])) { ... }? ¿O con una función extra? Me gusta esto:$out = my_extra_traverse_function($array,$key);

function array_traverse($array,$key=NULL) {
    $out = (string) $key;
    $out = $array[$key] . "/" . $out;

    $key = $array[$key];
    $out = $array[$key] ? $array[$key] . "/" . $out : "";
    $key = $array[$key];
    $out = $array[$key] ? $array[$key] . "/" . $out : "";
    $key = $array[$key];
    $out = $array[$key] ? $array[$key] . "/" . $out : "";

    return $out;
}

$a = Array(102=>101, 103=>102, 105=>107, 109=>105, 111=>109, 104=>111);
echo array_traverse($a,104);

Salida: 107/105/109/111/104

Respuestas a la pregunta(2)

Su respuesta a la pregunta