web-dev-qa-db-fra.com

PHP boucle foreach pour remplir la liste déroulante avec les valeurs d'un tableau de tableaux

J'ai un tableau d'un tableau créé en utilisant le code suivant. J'essaie de faire en sorte que cela se répète et remplisse une liste déroulante. 

$names = $db->fetchAll("select `name` from `classes`");

C'est ce qui est stocké dans la variable $ names.

Tableau ([0] => Tableau ([nom] => conception Web) [1] => Tableau ([nom] => Histoire de l'art) [2] => Tableau ([nom] => Gym ) [3] => Array ([name] => English) [4] => Array ([name] => Biologie) [5] => Array ([name] => Animation 3D) [6] => Tableau ([nom] => disque technique) [7] => Tableau ( [Nom] => Math) [8] => Tableau ([nom] => Dance) [9] => Array ( [Name] => Production vidéo) [10] => Array ([name] => Home Ec) [11] => Array ([ name] => Gouvernement) [12] => Array ([name] => Physics))

J'ai cette liste déroulante créée et cela fonctionne, mais il est codé à la main pour chaque valeur du tableau. Je souhaite modifier cela afin qu'il "parcourt" tous les résultats du tableau afin de créer la liste déroulante.

<label for="per1"></label>
<select name="per1" id="per1">
    <option selected="selected">Choose one</option>
    <option value="<?php echo $names[0]['name'];?>"><?php echo $names[0]['name'];?></option>
    <option value="<?php echo $names[1]['name'];?>"><?php echo $names[1]['name'];?></option>    
    <option value="<?php echo $names[2]['name'];?>"><?php echo $names[2]['name'];?></option>
    <option value="<?php echo $names[3]['name'];?>"><?php echo $names[3]['name'];?></option>
    <option value="<?php echo $names[4]['name'];?>"><?php echo $names[4]['name'];?></option>
    <option value="<?php echo $names[5]['name'];?>"><?php echo $names[5]['name'];?></option>
    <option value="<?php echo $names[6]['name'];?>"><?php echo $names[6]['name'];?></option>
    <option value="<?php echo $names[7]['name'];?>"><?php echo $names[7]['name'];?></option>
    <option value="<?php echo $names[8]['name'];?>"><?php echo $names[8]['name'];?></option>
    <option value="<?php echo $names[9]['name'];?>"><?php echo $names[9]['name'];?></option>
    <option value="<?php echo $names[10]['name'];?>"><?php echo $names[10]['name'];?></option>
    <option value="<?php echo $names[11]['name'];?>"><?php echo $names[11]['name'];?></option>
    <option value="<?php echo $names[12]['name'];?>"><?php echo $names[12]['name'];?></option>           
</select> 

Puis-je avoir une aide s'il vous plait?

5
Mr. B

Cette solution fonctionne pour les versions actuelles de PHP. Cas simple d'utilisation d'un foreach:

<select name="per1" id="per1">
  <option selected="selected">Choose one</option>
  <?php
    foreach($names as $name) { ?>
      <option value="<?= $name['name'] ?>"><?= $name['name'] ?></option>
  <?php
    } ?>
</select> 

Cette solution fonctionne pour les anciennes versions de PHP. Cas simple d'utilisation d'un foreach:

<select name="per1" id="per1">
  <option selected="selected">Choose one</option>
  <?php
    foreach($names as $name) { ?>
      <option value="<?php echo $name['name'] ?>"><?php echo $name['name'] ?></option>
  <?php
    } ?>
</select> 
14

je pense que cela suffit

foreach($names as $key =>$value)
{?>
<option value="<?=$value['name']?>"><?=$value['name']?></option>    
<?php }
2

Allez pour chaque boucle pour éviter ces beaucoup de codage.

<?php 
foreach($names as $nameIndex=>$nameVal){ ?>
   <option value=$nameVal['name']?>"><?=$nameVal['name']?> </option>
<?php } ?>
0
N.M.N