Resulta que estoy trabajando en un script para crear menús. La idea es que los menús se almacenen en una array, de forma similar a esta:
Código:
  
Como podéis ver, la matriz se repite en cada "sublinks", de forma que nada más mirar la matriz se podría observar cómo es el menú.$matriz => [1] => ['nombre'] = Link 1
                             ['url'] = http://miweb.com
                             ['padres'] = 
                             ['sublinks'] => [1] => ['nombre'] = Sublink 1
                                                    ['url'] = http://otraweb.com
                                                    ['padres'] = 1
                                                    ['sublinks'] => [1] => ['nombre'] = Link nieto
                                                                           ['url'] = http://maswebs.com
                                                                           ['padres'] = 1-1
                                                                           ['sublinks'] = ETC
El problema lo tengo en la insercion de contenido. Para insertar el contenido basta con:
Código PHP:
   //$ultimo_indice se calcula automaticamente y $nuevo_link es una matriz que contiene los indices 'nombre', 'url' y demás
$array_original[$ultimo_indice] = $nuevo_link 
    Código PHP:
   if ($_POST['padre'] == '') {
$array_original[$ultimo_indice] = $nuevo_link;
} else {
$array_original[$_POST['padre']]['sublinks'][$ultimo_indice] = $nuevo_link
} 
    Después de trastear un rato he conseguido almacenar los índices que debería tener la matriz en un variable. Si imprimo dicha variable obtendría algo así: [1]['sublinks']['1']['sublinks]['1'].
La idea sería utilizar esa variable como índices de la array y digo índices porque la vaiable no tiene que ser un índice, sinó que cada llave debería separar un nivel, y eso es lo que no consigo, me explico:
Código PHP:
   $indices = "1]['sublinks'][1]['sublinks][1"; // No se crea la variable así, pero sí de una forma similar
$array[$indices] = $nuevo_link;
//Y el resultado es
$array => [1]['sublinks'][1]['sublinks'][1] => ['nombre']
                                                                   ['url']
                                                                   ETC
// En lugar de
$array => [1] => ['sublinks'] => [1] => ['sublinks'] => [1] => ['nombre']
                                                                                              ['url'] 
                                                                                              ETC 
    Lo que quiero hacer es transformar la variable $indices de forma que no la tome como texto plano, sino que me separe los índices y pueda crear los diversos niveles.
Muchas gracias por vuestra ayuda.
Edito:
Ya he encontrado la solución. Os pongo el código algo resumido:
Código PHP:
   // $current contiene los índices de la matriz ([1]['sublinks'][1]['sublinks'])
$long=strlen($current)-1;
        $current = substr($current,0,$long);
        $current = substr($current,1);  
// Ahora $current está incompleto, le falta el corchete inicial y el final
        
        $string = '$wp_main_menu_link_prev['.$current.']';
// $string ahora almacena el nombre de la matriz junto con los índices
        
        $code = $string.' = $new_link;';
// $code es el código que me solucionaría el problema: $string (la matriz y sus índices) tiene por valor $new_link (la matriz con la información del link)
        
        eval($code);
// Con eval "ejecutamos" el código de antes
        
        return $wp_main_menu_link_prev;
// Devolvemos la matriz alterada correctamente 
     
 


