[PHP] Problema con array multidimensionale

Discussione in 'PHP' iniziata da Francesco Iacomino, 27 Settembre 2018.

  1. Francesco Iacomino

    Francesco Iacomino Nuovo Utente

    Registrato:
    6 Marzo 2018
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Buonasera a tutti, io in pratica ho questo array:
    <code>
    $film= array(
    array('film'=>"Faste and furius",
    'regista'=>"Miky tods",
    'attori'=>array("Michele Placido", "Tizioano ferro")),
    array('film'=>"Dalla Cina con furore",
    'regista'=>"Michael Moore",
    'attori'=>array("Bruce Lee", "Cheng whoo")),
    );
    </code>
    Ora vorrei stamparlo a video con un ciclo foreach, ma nella chiave attori è presente un altro array; quindi pur eseguendo questo codice mi da errore:
    <code>
    <ul>
    <?php for ($i=0; $i <count($film) ; $i++) {
    foreach ($film[$i] as $key=> $value) {
    echo "<li>".$key."->".$value."</li>";
    }
    } ?>
    </ul>
    </code>
    Come si può risolvere?Grazie
     
  2. Rikk73

    Rikk73 Utente Attivo

    Registrato:
    7 Aprile 2015
    Messaggi:
    133
    Mi Piace Ricevuti:
    6
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    .NET Software Developer
    Località:
    Arezzo
    PHP:
    for ($i=0$i <count($film) ; $i++){
      echo 
    $film[$i]['film'] . "<br />";
      echo 
    $film[$i]['regista'] . "<br />";
      echo 
    "Attori:<br />";
      echo 
    "<ul>"
      for (
    $ii=0$ii <count($film[$i]['attori']) ; $ii++){
        echo 
    "<li>" $film[$i]['attori'][$ii] . "</li>";
      }
      echo 
    "</ul>";  
    }
    così dovrebbe funzionare.
    ps: usa i tag PHP quando posti codice
     
  3. Francesco Iacomino

    Francesco Iacomino Nuovo Utente

    Registrato:
    6 Marzo 2018
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Stavo per scrivere nuovamente ma mi hai preceduto, io avevo risolto così secondo te è corretto uguale?
    PHP:

    for ($i=0$i <count($film) ; $i++) {
      foreach (
    $film[$i] as $key=> $value) {
        if (
    is_array($value)) {
          for (
    $a=0$a <count($value) ; $a++) {
            echo 
    "<li>".$key."->".$value{$a}."</li>";
        }
      break;}
        echo 
    "<li>".$key."->".$value."</li>";
    } }
    Grazie mille
     
  4. Rikk73

    Rikk73 Utente Attivo

    Registrato:
    7 Aprile 2015
    Messaggi:
    133
    Mi Piace Ricevuti:
    6
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    .NET Software Developer
    Località:
    Arezzo
    apertura [ PHP ]
    chiusura [ / PHP ]
    (senza gli spazi)

    Il concetto è ... se il comportamento ottenuto è quello che vuoi si, è corretto.
    Se sai per certo che la struttura è sempre la stessa puoi semplificare il ciclo con qualcosa di simile al mio esempio, se non ne sei sicuro (cioè attori non sempre è un array, o regista potrebbe essere un array) allora è meglio il tuo codice.

    Edit:
    Casomai togli il break; e fai
    PHP:
    //...
    if (is_array($value)){
      
    //...
    }
    else{
    /...
    }
    quindi se è un array lo cicli stampandolo, altrimenti lo stampi e basta
     
  5. Francesco Iacomino

    Francesco Iacomino Nuovo Utente

    Registrato:
    6 Marzo 2018
    Messaggi:
    14
    Mi Piace Ricevuti:
    1
    Punteggio:
    3
    Sesso:
    Maschio
    Alla fine ho capito come inserire il codice php ed ho corretto la sintassi,grazie.
    Faccio degli esercizi per prendere confidenza con gli array e stavo provando vari casi...grazie gentilissimo;)
     
    A Rikk73 piace questo elemento.
Sto caricando...

Condividi questa Pagina