如何将我的国家/地区数组放入<select>标签中?



所以,我正在一个混合html.php项目中做一个表单,如果我想有一个select标记,它可以提供所有国家列表作为选项。我将我的列表存储在一个数组"国家"下,如下所示:

$countries = array("Afghanistan", "Albania", "Algeria", ...."Zambia", "Zimbabwe");

并试图在我的选择标签中循环,这样每个国家都会弹出一个选项标签。

<div class="form-group">
<label for="countries" class="col-md-3 control-label">Countries</label>
<div class="col-md-6">
<select class="form-control" id="countries" name="countries">
<?php foreach ($countries as $country) { ?>
<option value="<?= $countries->country ?>"><?= $countries->country ?></option>
<?php } ?>
</select>
</div>
<div class="col-md-3 error">
<?php error('countries'); ?>
</div>
</div>

但我得到的是"试图获得非对象的属性">

所以,因为我在php方面没有进步,如果有人愿意帮助我,我会被正在发生的事情所阻止。谢谢

$countries是一个数组,您使用的foreach循环将数组的值设置为$country。你只是为了呼应$country。

<div class="form-group">
<label for="countries" class="col-md-3 control-label">Countries</label>
<div class="col-md-6">
<select class="form-control" id="countries" name="countries">
<?php foreach ($countries as $country) { ?>
<option value="<?= $country ?>"><?= $country ?></option>
<?php } ?>
</select>
</div>
<div class="col-md-3 error">
<?php error('countries'); ?>
</div>
</div>

希望这能帮助你:(

显然这是错误的部分:

<?php foreach ($countries as $country) { ?>
<option value="<?= $countries->country ?>"><?= $countries->country ?></option>
<?php } ?>

因为foreach ($countries as $country)的意思是"进入$countries并在每次迭代中保存$country中的当前元素",所以代码应该是这样的:

<?php foreach ($countries as $country) { ?>
<option value="<?= $country ?>"><?= $country ?></option>
<?php } ?>

如果在foreach中循环$countries as $country,则循环的每个实例中的$countries的每个元素都保存在$country中。

这意味着,要打印每个国家,一个循环看起来像这样:

foreach ($countries as $country) {
echo $country;
}

另一种方法是只使用for循环。给定数组$countries,您可以执行以下操作:

<select name="country">
<?php
$ct = count($countries)
for($i=0;$i<=$ct;$i++){
$country = $countries[$i];
echo "<option value='$country'>$country</option>";
}
?>
</select>

希望这能有所帮助。

最新更新