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

PHP foreach循环使用数组中的值填充下拉列表,php,arrays,loops,Php,Arrays,Loops,我使用以下代码创建了一个数组的数组。我试图让它循环并填充一个下拉列表 $names = $db->fetchAll("select `name` from `classes`"); 这是存储在$names变量中的内容 数组([0]=>Array([name]=>Web设计)[1]=>Array([name]=> 艺术史)[2]=>阵列([name]=>健身房)[3]=>阵列([name]=> 英语)[4]=>数组([name]=>生物学)[5]=>数组([name]=> 3D动画)[6]

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

$names = $db->fetchAll("select `name` from `classes`");
这是存储在$names变量中的内容

数组([0]=>Array([name]=>Web设计)[1]=>Array([name]=> 艺术史)[2]=>阵列([name]=>健身房)[3]=>阵列([name]=> 英语)[4]=>数组([name]=>生物学)[5]=>数组([name]=> 3D动画)[6]=>阵列([name]=>技术光盘)[7]=>阵列( [name]=>数学[8]=>数组([name]=>舞蹈)[9]=>数组( [name]=>视频制作[10]=>阵列([name]=>家庭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> 

选一个
有人能帮忙吗?

我想这就足够了

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

此解决方案适用于当前的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> 
<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> 

选一个

此解决方案适用于较旧的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> 
<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> 

选一个

针对每个循环进行编码,以避免这些过多的编码

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

"> 

这是一种在下拉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>

选择城市

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

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

选一个

这个问题肯定是一个巨大的重复,但我还没有花时间搜索这个任务在堆栈溢出上的最早发布。

它创建了一个列表,但选项和值都是空的。有什么想法吗?$names是数组数组的数组。有什么东西会因为这个而有机会吗?$names是数组的数组,所以当你foreach它时,每个“name”本身就是一个数组,您需要的数组索引是['name']。您没有指定php版本,但如果您有一个php版本,那么将选项的文本镜像为其
属性绝对没有任何好处--您可以安全地省略
声明。表单提交和所有js进程仍将工作相同。如果没有其他选项,则将选择第一个选项选中。@mickmackusa这是真的,但虽然没有“好处”,但它们并不等同。我的答案旨在输出相同的HTML。例如,如果它们有
document.querySelector(“#pet select option[value=Physics]”).
如果未在value属性中设置该元素,它将找不到该元素。将选项的文本镜像为其
属性绝对没有好处——您可以安全地省略
声明。表单提交和所有js过程仍将工作相同。@Mickusa绝对正确,than Mackusak将选项的文本镜像为其
属性绝对没有好处——您可以安全地省略
声明。表单提交和所有js流程仍将工作相同。将选项的文本镜像为其
属性绝对没有好处——您可以安全地省略e
value
declaration。表单提交和所有js流程仍将保持不变。