PHP Recorrer la matriz multidimensional mientras conserva las claves

Tengo una matriz multidimensional de la cual no puedo conocer la profundidad. La matriz podría, por ejemplo, verse así:

$array = array(
    1 => array(
        5 => array(
            3 => 'testvalue1'
        )
    ),
    2 => array(
        6 => 'testvalue2'
    ),
    3 => 'testvalue3',
    4 => 'testvalue4',
);

Con esta matriz, quiero crear una tabla de contenido. Eso significa que las claves deben conservarse ya que las estoy usando como "números de capítulo". Por ejemplo, "testvalue1" se encuentra en el capítulo 1.5.3.
Ahora quiero caminar a través de la matriz conservando todas las claves, sin usar array_walk_recursive ya que las claves que contienen otra matriz se descartan (¿correcto?) Y preferiblemente no se utilizan bucles foreach anidados teniendo en cuenta la velocidad.
¿Alguna sugerencia de cómo debo hacer esto? Gracias por adelantado

PS: Para mi script, no importa si las claves son cadenas ("1" en lugar de 1) o enteros, si tener cadenas como clave hará que array_walk_recursive las conserve.