我使用以下代码创建了数组数组。我试图让它循环并填充下拉列表。
$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>
有人可以帮忙吗?
答案 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>