Salve a tutti, chiedo scusa per il titolo un po' vago ma non mi è venuta in mente una descrizione migliore.
Sto progettando un menù gerarchico con infinte sottocategorie.
I dati sulle varie pagine sono tutti memorizzati in un DB.
Il mio script estrae tutta la struttura del menu dal DB e lo trasforma in un array multidimensionale.
La mia esigenza è questa:
dato un elemento qualsiasi di questo menù restituirmi tutte le voci superiori.
Vi incollo qui un esempio di array:
(tenete presente che sia 'id' che 'title' sono univoche. 'padre' contiene l'id della voce precedente.
Quello che voglio ottenere è questo:codice:Array ( [0] => Array ( [id] => 1 [title] => Home [padre] => 0 [figlio] => Array ( ) ) [1] => Array ( [id] => 2 [title] => Page 2 [padre] => 0 [figlio] => Array ( ) ) [2] => Array ( [id] => 4 [title] => Page 3 [padre] => 0 [figlio] => Array ( [0] => Array ( [id] => 9 [title] => Figlio di Page 3 [padre] => 4 [figlio] => Array ( [0] => Array ( [id] => 11 [title] => Figlio del figlio di Page 3 [padre] => 9 [figlio] => Array ( [0] => Array ( [id] => 13 [title] => MioTarget [padre] => 11 [figlio] => Array ( ) ) ) ) ) ) [1] => Array ( [id] => 10 [title] => Io sono un altro figlio di Page 3 [padre] => 4 [figlio] => Array ( ) ) ) ) [3] => Array ( [id] => 5 [title] => Page 4 [padre] => 0 [figlio] => Array ( [0] => Array ( [id] => 12 [title] => Figlio di Page 4 [padre] => 5 [figlio] => Array ( ) ) ) ) [4] => Array ( [id] => 6 [title] => Page 5 [padre] => 0 [figlio] => Array ( ) ) )
preso come input "MioTarget" o il suo id corrispondente (13) voglio che mi restituisca:
Page 3 > Figlio di Page 3 > Figlio del figlio di Page 3 > MioTarget
Spero che qualcuno di voi riesca a darmi una mano
EDIT:
per chi volesse fare delle prove vi incollo una versione serializata dell'array:
codice:a:7:{i:0;a:7:{s:6:"ordine";s:1:"1";s:2:"id";s:1:"1";s:5:"title";s:8:"Homepage";s:10:"menu_title";s:4:"Home";s:4:"path";s:4:"home";s:5:"padre";s:1:"0";s:6:"figlio";a:0:{}}i:1;a:7:{s:6:"ordine";s:1:"2";s:2:"id";s:1:"2";s:5:"title";s:26:"Professional Boat Building";s:10:"menu_title";s:3:"Pbb";s:4:"path";s:3:"pbb";s:5:"padre";s:1:"0";s:6:"figlio";a:0:{}}i:2;a:7:{s:6:"ordine";s:1:"3";s:2:"id";s:1:"4";s:5:"title";s:18:"Fiera e Territorio";s:10:"menu_title";s:10:"Territorio";s:4:"path";s:10:"territorio";s:5:"padre";s:1:"0";s:6:"figlio";a:2:{i:0;a:7:{s:6:"ordine";s:1:"1";s:2:"id";s:1:"9";s:5:"title";s:23:"Il complesso fieristico";s:10:"menu_title";s:20:"Complesso Fieristico";s:4:"path";s:20:"complesso_fieristico";s:5:"padre";s:1:"4";s:6:"figlio";a:1:{i:0;a:7:{s:6:"ordine";s:1:"1";s:2:"id";s:2:"11";s:5:"title";s:7:"Cartina";s:10:"menu_title";s:7:"Cartina";s:4:"path";s:7:"cartina";s:5:"padre";s:1:"9";s:6:"figlio";a:1:{i:0;a:7:{s:6:"ordine";s:1:"1";s:2:"id";s:2:"13";s:5:"title";s:9:"Dettaglio";s:10:"menu_title";s:9:"Dettaglio";s:4:"path";s:9:"dettaglio";s:5:"padre";s:2:"11";s:6:"figlio";a:0:{}}}}}}i:1;a:7:{s:6:"ordine";s:1:"2";s:2:"id";s:2:"10";s:5:"title";s:13:"Come Arrivare";s:10:"menu_title";s:13:"Come Arrivare";s:4:"path";s:13:"come_arrivare";s:5:"padre";s:1:"4";s:6:"figlio";a:0:{}}}}i:3;a:7:{s:6:"ordine";s:1:"4";s:2:"id";s:1:"5";s:5:"title";s:6:"Eventi";s:10:"menu_title";s:6:"Eventi";s:4:"path";s:6:"eventi";s:5:"padre";s:1:"0";s:6:"figlio";a:1:{i:0;a:7:{s:6:"ordine";s:1:"1";s:2:"id";s:2:"12";s:5:"title";s:15:"Eventi Speciali";s:10:"menu_title";s:15:"Eventi Speciali";s:4:"path";s:8:"speciali";s:5:"padre";s:1:"5";s:6:"figlio";a:0:{}}}}i:4;a:7:{s:6:"ordine";s:1:"5";s:2:"id";s:1:"6";s:5:"title";s:15:"Esporre con PBB";s:10:"menu_title";s:7:"Esporre";s:4:"path";s:7:"esporre";s:5:"padre";s:1:"0";s:6:"figlio";a:0:{}}i:5;a:7:{s:6:"ordine";s:1:"6";s:2:"id";s:1:"7";s:5:"title";s:8:"Visitare";s:10:"menu_title";s:8:"Visitare";s:4:"path";s:8:"visitare";s:5:"padre";s:1:"0";s:6:"figlio";a:0:{}}i:6;a:7:{s:6:"ordine";s:1:"7";s:2:"id";s:1:"8";s:5:"title";s:11:"Area Stampa";s:10:"menu_title";s:11:"Area Stampa";s:4:"path";s:11:"area_stampa";s:5:"padre";s:1:"0";s:6:"figlio";a:0:{}}}