Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Array nidificato

  1. #1
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567

    Array nidificato

    Ciao a tutti, ho un problema sto facendo un menù utilizzando delle array nidificate, in pratica realizzo dei menù e dei sottomenù, l'array ha la seguente struttura:

    Codice PHP:
    $config_menu['menu'] = array("home"=>"home.php",
                                 
    "catalogo"=>array("home"=>"home.php",
                                     
    "elenco"=>"catalogo/index.php",
                                 
    "nuovo"=>"galleria/index.php"),
                        
    "galleria"=>"galleria/index.php",
                        
    "newsletter"=>"newsletter/index.php"); 
    Le stampo a video in questo modo:

    Codice PHP:
    <?
    foreach($config_menu['menu'] as $chiave => $valore)  
       {
       echo 
    "[*]<a href=\"".$valore."\">".$chiave."</a>";
               foreach(
    $config_menu['menu'][$chiave] as $chiave1 => $valore1)  
               {
              echo 
    "[*]<a href=\"".$valore1."\">".$chiave1."</a>";
            }  
       }  
    ?>  

    Non mi funziona correttamente. Premetto che è pochissimo che lavoro in PHP, non riesco ad individuare l'errore.
    Riuscite a darmi una mano???

    Grazie mille

  2. #2
    Cosa significa "Non mi funziona correttamente."?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Ciao..

    hai fatto alcuni errori grossolani...

    Codice PHP:
    $str '<ul class="main-menu">';
    foreach( 
    $config_menu['menu'] as $k=>$v ) {
        if ( !
    is_array$v ) ) {
            
    $str .= '[*][url="' $v '"]' $k '[/url]';
            } else {
            
    $str .= '<ul class="sub-menu">';
            foreach ( 
    $v AS $key=>$link ) {
                
    $str .= '[*][url="' $link '"]' $key '[/url]';
            }
            
    $str .= '[/list]';
        }
    }
    $str .= '[/list]';
    echo 
    $str
    prova cosi.. se non capisci bene chiedi pure
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Prova con una funzione ricorsiva, cosi ti stampi quanti sottomenu vuoi

    Codice PHP:
    function menu($menu$level 0)
    {
        
    $r "<ul class=\"menu_$level\">\n";
        
        foreach (
    $menu as $key => $value)
        {
             if (
    is_array($value))
            {
                
    $r .= menu($value, ++$level);
            }
            else 
            {
                
    $r .= "[*]<a href=\"$key\">$value\n";
            }
        }
        
        return 
    $r .= '[/list]';
    }    

    echo 
    menu($config_menu['menu']); 
    Ovviamente modificala secondo le tue esigenze e mettici qualche controllo.
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  5. #5
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    Funziona meglio, però la seconda voce catalogo non la fa vedere e mette solo i sottomenù, forse ho scritto male l'array nidificata?

  6. #6
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    No errore mio... avevo dimenticato di scrivere l'apertura del "li" che contiene le sottovoci

    Codice PHP:
    function menu($menu$level 0)
    {
        
    $r "<ul class=\"menu_$level\">\n";
        
        foreach (
    $menu as $key => $value)
        {
            if (
    is_array($value))
            {
                
    $r .= "[*]<a href=\"#\">$key\n" menu($value, ++$level) . '';
            }
            else 
            {
                
    $r .= "[*]<a href=\"$value\">$key\n";
            }
        }
        
        return 
    $r .= '[/list]';
    }    

    echo 
    menu($config_menu['menu']); 
    Per scrupolo l'ho testata e funge
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  7. #7
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    Perfetto grazie mille siete stati preziosi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.