>我有一个用于国家选择的多选框。 我想选择任何关联的国家,这意味着我从数据库中得到一个数组。
这是我的代码:
<?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 的解释,这可能是相当不言自明的,但任何帮助都会很棒!
这解决了它:
<?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>';
}
}
?>
无论是否
设置了值,您的内部 'foreach' 语句都将输出 'something',并且它基于在外部 foreach 循环中设置的 $country 变量来输出。
因此,每次在内部 foreach 循环上运行时,您在外部 'foreach' 循环上输出一次。