Цикл по нескольким массивам и отображение опций выбора - PullRequest
0 голосов
/ 13 мая 2011

У меня есть поле для выбора нескольких стран. Я хочу выбрать любые страны, которые связаны, то есть массив, который я получаю из базы данных.

Вот код, который у меня есть:

                        <?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 из одной и той же страны в зависимости от количества элементов в массиве. Так что, если Соединенные Штаты будут проверены, они будут показаны три раза, с последним проверенным.

Ладно, извините за неясное объяснение, оно, вероятно, довольно понятно, но любая помощь будет потрясающей!

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Это решило это:

                        <?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>';

                            }
                        }
                    ?>
0 голосов
/ 13 мая 2011

Ваш внутренний оператор 'foreach' будет выводить 'что-то' независимо от того, установлено значение или нет, и это происходит на основе переменной $ country, установленной во внешнем цикле foreach.

Так чтослучается, что вы выводите во внешний цикл 'foreach' один раз для каждого запуска во внутреннем цикле foreach.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...