通过多个阵列循环并显示选择选项
问题描述:
我有用于国家选择的多选框。我想选择任何关联的国家,这意味着我从数据库中获得的数组。通过多个阵列循环并显示选择选项
这里是我的代码:
<?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>';
}
}
?>
使用in_array或array_search代替嵌套的foreach。 – 2011-05-12 21:25:03
in_array和array_search不会工作,因为它是数组 – dzm 2011-05-12 21:42:31
中的数组。我发誓有一些方法递归搜索。 – 2011-05-12 22:00:19