我有一个用于国家选择的多选框。我想选择任何相关的国家,这意味着我从数据库中得到一个数组。
这是我的代码:
<?php
foreach($countries as $country){
if(!empty($offer_countries)){
foreach($offer_countries as $key => $offer_country){
if(isset($offer_country['country_id']) && ($offer_country['country_id'] == $country['id'])){
echo '<option value="'.$country['id'].'" selected>'.$country['name'].'</option>';
}else{
echo '<option value="'.$country['id'].'">'.$country['name'].'</option>';
}
}
}else{
echo '<option value="'.$country['id'].'">'.$country['name'].'</option>';
}
}
?>
$ offer_countries数组,如下所示:
Array
(
[0] => Array
(
[country_id] => 1
)
[1] => Array
(
[country_id] => 2
)
[2] => Array
(
[country_id] => 3
)
)
我正在循环显示所有国家/地区,然后我有一个嵌套的foreach来查看该国家是否已设置,如果是,请选中该选项框。
问题在于,假设我选择了3个项目,它将根据数组中的项目数显示同一个国家/地区的3个项目。因此,如果美国应该被检查,它将显示三次,最后一次检查。
好的,对于looong的解释感到抱歉,这可能是相当自我解释的,但任何帮助都会很棒!
答案 0 :(得分:2)
这解决了它:
<?php
foreach($countries as $country){
$i = 0;
if(!empty($offer_countries)){
foreach($offer_countries as $key => $offer_country){
if($offer_country['country_id'] == $country['id']){
echo '<option value="'.$country['id'].'" selected>'.$country['name'].'</option>';
$i = 1;
break;
}
}
if($i == 0){
echo '<option value="'.$country['id'].'">'.$country['name'].'</option>';
}
}else{
echo '<option value="'.$country['id'].'">'.$country['name'].'</option>';
}
}
?>
答案 1 :(得分:0)
你的内部'foreach'语句将输出'something',无论该值是否设置,并且它是根据外部foreach循环中设置的$ country变量执行的。
所以会发生的是,每次在内部foreach循环上运行时,您在外部'foreach'循环上输出一次。