[PHP] Problema con array multidimensionale

Francesco Iacomino

Nuovo Utente
6 Mar 2018
14
1
3
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
 
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
 
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

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
 
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
 
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

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;)
 
  • Like
Reactions: Rikk73

Discussioni simili