循环遍历多个数组并显示选择选项


Looping through multiple arrays and display select options

>我有一个用于国家选择的多选框。 我想选择任何关联的国家,这意味着我从数据库中得到一个数组。

这是我的代码:

                        <?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' 循环上输出一次。