Как я могу поместить свой массив стран в тег <select>? - PullRequest
1 голос
/ 24 февраля 2020

Итак, я делаю форму в смешанном html / php проекте, где я хочу иметь тег выбора, который дает в качестве опций весь список стран. Я сохранил свой список в массиве «страны» следующим образом:

$countries = array("Afghanistan", "Albania", "Algeria", ...."Zambia", "Zimbabwe");

и попытался l oop в своем теге выбора, чтобы каждая страна всплывала в теге опции.

<div class="form-group">
                            <label for="countries" class="col-md-3 control-label">Countries</label>
                            <div class="col-md-6">
                                <select class="form-control" id="countries" name="countries">
                                    <?php foreach ($countries as $country) { ?>
                                        <option value="<?= $countries->country ?>"><?= $countries->country ?></option>
                                    <?php } ?>
                                </select>
                            </div>
                            <div class="col-md-3 error">
                                <?php error('countries'); ?>
                            </div>
                        </div>

но я получаю "пытаться получить свойство необъекта"

Так как я не продвигаюсь в php, я как бы заблокирован тем, что происходит, если кто-то готов Помоги мне. Спасибо

Ответы [ 4 ]

2 голосов
/ 24 февраля 2020

$ country - это массив, и вы используете foreach l oop, который получает значение массива в $ country. Вы просто должны повторить $ страну.

<div class="form-group">
       <label for="countries" class="col-md-3 control-label">Countries</label>
       <div class="col-md-6">
            <select class="form-control" id="countries" name="countries">
                  <?php foreach ($countries as $country) { ?>
                       <option value="<?= $country ?>"><?= $country ?></option>
                  <?php } ?>
              </select>
        </div>
        <div class="col-md-3 error">
              <?php error('countries'); ?>
        </div>
</div>

Надеюсь, это поможет вам:)

0 голосов
/ 24 февраля 2020

Другой способ - просто использовать для l oop. Учитывая массив $countries, вы можете сделать это:

<select name="country">
<?php
$ct = count($countries)
for($i=0;$i<=$ct;$i++){
$country = $countries[$i];
echo "<option value='$country'>$country</option>";
}
?>
</select>

Надеюсь, это поможет.

0 голосов
/ 24 февраля 2020

Если вы l oop $countries as $country в foreach , каждый элемент $countries сохраняется в $country в каждом экземпляре l oop.

Это означает, что для печати каждой страны все oop выглядит так:

foreach ($countries as $country) {
  echo $country;
}
0 голосов
/ 24 февраля 2020

очевидно, что это неправильная часть:

<?php foreach ($countries as $country) { ?>
    <option value="<?= $countries->country ?>"><?= $countries->country ?></option>
<?php } ?>

, потому что foreach ($countries as $country) означает "go внутри $countries и сохраняет на каждой итерации текущий элемент внутри $country" и т. Д. должно выглядеть так:

<?php foreach ($countries as $country) { ?>
    <option value="<?= $country ?>"><?= $country ?></option>
<?php } ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...