【发布时间】:2011-05-12 21:18:54
【问题描述】:
我有一个用于选择国家/地区的多选框。我想选择任何相关的国家,这意味着我从数据库中得到一个数组。
这是我的代码:
<?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 个。因此,如果应选中 United States,它会显示 3 次,最后一次选中。
好的,对于冗长的解释很抱歉,这可能是不言自明的,但任何帮助都会很棒!
【问题讨论】:
-
使用 in_array 或 array_search 代替嵌套的 foreach。
-
in_array 和 array_search 不起作用,因为它是数组中的数组
-
对不起。我发誓有某种方法可以递归搜索。
-
我想
array_uintersect可以工作,但我怀疑在这种情况下会有性能提升。