PHP foreach循环使用数组数组中的值填充下拉列表

时间:2014-05-08 15:59:14

标签: php arrays loops

我使用以下代码创建了数组数组。我试图让它循环并填充下拉列表。

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

这是存储在$ names变量中的内容。

  

数组([0] =>数组([名称] =>网页设计)[1] =>数组([名称] =>   艺术史)[2] =>数组([name] =>健身房)[3] =>数组([name] =>   英语)[4] =>数组([名称] =>生物学)[5] =>数组([name] =>   3D动画)[6] =>数组([name] => Tech Disc)[7] =>阵列(   [name] =>数学)[8] =>数组([name] => Dance)[9] =>阵列(   [name] =>视频制作)[10] =>数组([name] => Home Ec)[11]   =>数组([name] =>政府)[12] =>数组([name] =>物理))

我创建了这个下拉列表并且它可以工作,但是它是针对数组中的每个值进行手工编码的。我想修改它,以便它循环播放'通过数组中的所有结果来创建下拉列表。

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

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:14)

此解决方案适用于当前的PHP版本。 使用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> 

此解决方案适用于较旧的PHP版本。 使用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> 

答案 1 :(得分:2)

我认为这已经足够了

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

答案 2 :(得分:1)

由于您不需要使用与选项文本相同的值编写选项的 value 属性,因此可以使用 implode 而不是经典循环来完成此操作。

<?php $options = array_column($names, 'name'); ?>
<select name="per1" id="per1">
    <option value="">Choose one</option>
    <?php if ($options) {
        echo '<option>' . implode('</option><option>', $options) . '</option>';
    } ?>
</select>

这个问题肯定是一个超级重复的问题,但我还没有花时间在 Stack Overflow 上搜索这个任务的最早发布。

答案 3 :(得分:0)

为每个循环寻找以避免这些编码。

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

答案 4 :(得分:0)

以下拉html形式或在任何地方使用php数组以将php foreach值显示为下拉值的简便方法

<select name="city" required class="form-control"> 
   <option value="">Select City</option>
   <?php foreach($pkcities as $rows){ $city = $rows['city']; ?>
   <option  value="<?=$city;?>" ><?=$city;?></option>
   <?php } ?>
   </select>