Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449

    foreach e array associativo

    Creo un array associativo di questo tipo:
    codice:
    $rightmenu=array("La biblioteca"=>array("La biblioteca","Regolamento"),
    "Chi siamo"=>array("chisiamo"=>"Chisiamo","inizi"=>"Gli inizi","intitolazione"=>"L'intitolazione","inaugurazione"=>"L'inaugurazione","autonomia"=>"L'autonomia","guerra"=>"Guerra e dopoguerra","territorio"=>"Il territorio","risposte"=>"Le risposte","utenza"=>"L'utenza","organigramma"=>"L'organigramma a. s. 2007-2008"),
    Questo per poter avere nel menu nomi estesi, più estesi dei nomi dei file.
    Come posso istanziare la variabile con foreach? Cioè, in teoria so che va messo
    foreach($nomearray as $chiave=>$valore)
    m< in pratica cosa metto come chiave e che cosa come valore?

    Grazie
    M.

  2. #2
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    $chiave e $valore sono valori da leggere più che da scrivere.
    Cioè, dentro il blocco del foreach troverai in $chiave "La Biblioteca" e in $valore l'array associato.
    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Ma come devo modificare l'istruzione? Prima avevo:
    codice:
    <?php
    isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="Home";
    $rightmenu=array("La biblioteca"=>array("La biblioteca","Regolamento"),
    "Circolari"=>array("Circolari","Area pubblica","Area riservata"),
    "Chi siamo"=>array("chisiamo","inaugurazione","autonomia",
    "Contatti"=>array("Contatti","Dirigenza",
    );
    $activemenu=0;
    $folder="Home";
    foreach($rightmenu as $kmenu=>$vmenu) {
    if(in_array($pagina,$vmenu) | $pagina==$kmenu) {
    $activemenu=$rightmenu[$kmenu];
    $folder=$kmenu;
    }
    }
    $vocimenu=array("Home","Chi siamo","Contatti","News",Progetti","Agenda");
    foreach($vocimenu as $voce) {
    echo "[*]";
    if($pagina!=$voce) echo '<a href="index.php?pagina='.$voce.'">';
    echo $voce;
    if($pagina!=$voce) echo "</a>";
    echo "";
    }
    
    $vocimenu2=array("Home",Newsletter","La biblioteca","Studenti","Siti utili");
    foreach($vocimenu2 as $voce2) {
    echo "[*]";
    if($pagina!=$voce2) echo '<a href="index.php?pagina='.$voce2.'">';
    echo $voce2;
    if($pagina!=$voce2) echo "</a>";
    echo "";
    }
    echo "\n";
              ?>[/list]
          </div>
          <div id="rightmenu">
            <?php
    if($activemenu) {
    echo "
    <ul>";
    foreach($activemenu as $voce3=>$vocimenu2) {
    echo "[*]";
    if($pagina!=$voce3) echo '<a href="index.php?pagina='.$voce3.'">';
    echo $voce3;
    if($pagina!=$voce3) echo "</a>";
    echo "";
    }
    echo "[/list]\n";
    } else echo "";
            ?>
          </div>
          <?php include("$folder/$pagina.php")
          ?>
    (ho tolto un po' di cose.
    Se adesso volessi mettere invece di
    "Chi siamo"=>array("chisiamo","inaugurazione","autonomi a",
    una cosa del tipo
    "Chi siamo"=>array("chisiamo"=>"Chi siamo","inaugurazione"=>"L'inaugurazione del 1922","autonomia",
    cos'altro e dove dovrei modificare nel foreach?
    Perché altrimenti le pagine non vengono trovate...

    Grazie
    M.

  4. #4
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    Non ho capito bene il funzionamento del codice (probabilmente perchè non è tutto), ma credo che la parte che ti interessi sia l'ultimo foreach (per $activemenu). Grosso modo è corretto, solo che devi modificare $voce3 con $vocimenu2 in un punto:
    Codice PHP:
    foreach($activemenu as $voce3=>$vocimenu2) {
    echo 
    "[*]";
    if(
    $pagina!=$voce3) echo '<a href="index.php?pagina='.$voce3.'">';
    echo 
    $vocimenu2;
    if(
    $pagina!=$voce3) echo "</a>";
    echo 
    "";
    }
    echo 
    "[/list]\n";

    Sempre che io abbia capito esattamente come funzioni il tutto
    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Mmm, non va... Però potrei aver sbagliato io di intenderti!
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>Liceo Ginnasio Franchetti - Mestre (VE)</title>
        <meta name="GENERATOR" content="Quanta Plus" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="description" content="Liceo Ginnasio Franchetti" />
        <meta name="keywords" content="Liceo Ginnasio Franchetti" />
        <link rel="stylesheet" type="text/css" href="stylesheets/layout.css" />
        <script src="blank.js" type="text/javascript"> </script>
      </head>
      <body>
        <div id="container">
          <div id="header">
            [img]pics/loghi/logo.gif[/img][img]pics/loghi/logo.gif[/img]
            <h3 class="header">
               Liceo Ginnasio Statale &#171;Raimondo Franchetti&#187;
              
    
               Corso del Popolo 82 - 30172 MESTRE VENEZIA
              
    
               Tel. 041 5315531 - Fax 041 5328524
            </h3>
            <div id="navbarwrapper">
              <div id="navbar">
                <ul>
                  <?php
    isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="Home";
    $rightmenu=array("La biblioteca"=>array("La biblioteca","Regolamento"),
    "Circolari"=>array("Circolari","Area pubblica","Area riservata"),
    "Chi siamo"=>array("chisiamo"=>"Chisiamo","franchetti"=>"Chi &#232; Raimondo Franchetti","inizi"=>"Gli inizi","intitolazione"=>"L'intitolazione","inaugurazione"=>"L'inaugurazione","autonomia"=>"L'autonomia","guerra"=>"Guerra e dopoguerra","territorio"=>"Il territorio","risposte"=>"Le risposte del Franchetti","utenza"=>"L'utenza","organigramma"=>"L'organigramma a. s. 2007-2008"),
    "Contatti"=>array("Contatti","Dirigenza","Collaboratori del Dirigente","Funzioni strumentali","Coordinatori dei Dipartimenti","Responsabili laboratori","Coordinatori dei Consigli di Classe","Calendario Consigli di Classe","Calendario ricevimento genitori","Orario di ricevimento","Email"),
    "POF"=>array("Commissione POF","Testo del POF","Carta dei servizi","Regolamento di Istituto","Statuto degli studenti","Regolamento applicativo","Regolamento gite"),
    "Progetti"=>array("Referenti di progetto","ECDL","Scambio Australia","Galleria Australia","Scambio USA","Galleria USA","Musica"),
    "Segreteria"=>array("Segreteria","Richiesta certificati","Richiesta informazioni","contattaci")
    );
    $activemenu=0;
    $folder="Home";
    foreach($rightmenu as $kmenu=>$vmenu) {
    if(in_array($pagina,$vmenu) | $pagina==$kmenu) {
    $activemenu=$rightmenu[$kmenu];
    $folder=$kmenu;
    }
    }
    $vocimenu=array("Home","Chi siamo","Contatti","News","POF","Progetti","Agenda","Segreteria");
    foreach($vocimenu as $voce) {
    echo "[*]";
    if($pagina!=$voce) echo '<a href="index.php?pagina='.$voce.'">';
    echo $voce;
    if($pagina!=$voce) echo "</a>";
    echo "";
    }
    echo "\n";
                  ?>[/list]
              </div>
            </div>
          </div>
          <div id="leftmenu">
            <ul>
              <?php
    $vocimenu2=array("Home","Scuolanet","Newsletter","Circolari","La biblioteca","Studenti","Siti utili");
    foreach($vocimenu2 as $voce2) {
    echo "[*]";
    if($pagina!=$voce2) echo '<a href="index.php?pagina='.$voce2.'">';
    echo $voce2;
    if($pagina!=$voce2) echo "</a>";
    echo "";
    }
    echo "\n";
              ?>[/list]
          </div>
          <div id="rightmenu">
            <?php
    if($activemenu) {
    echo "
    <ul>";
    foreach($activemenu as $voce3) {
    echo "[*]";
    if($pagina!=$voce3) echo '<a href="index.php?pagina='.$voce3.'">';
    echo $vocimenu2;
    if($pagina!=$voce3) echo "</a>";
    echo "";
    }
    echo "[/list]\n";
    } else echo "";
            ?>
          </div>
          <?php include("$folder/$pagina.php")
          ?>
          <div id="footer">
             © Liceo Ginnasio Statale &#171;Raimondo Franchetti&#187; - 2008
          </div>
        </div>
      </body>
    </html>
    Questo è tutto il codice...

    M.

  6. #6
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    Prova a sostutuire l'ultimo foreach con questo:
    Codice PHP:
    foreach($activemenu as $voce3 => $label) {
    echo 
    "[*]";
    if(
    $pagina!=$voce3) echo '<a href="?pagina='.$voce3.'">';
    echo 
    $label;
    if(
    $pagina!=$voce3) echo "</a>";
    echo 
    "";

    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

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.