Also mache ich ein Formular in einem Mix-HTML / PHP-Projekt, in dem ich ein Select-Tag haben möchte, das als Option die Liste aller Länder angibt. Ich habe meine Liste unter einem Array "Länder" als solches gespeichert:

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

Und habe versucht, innerhalb meines Auswahl-Tags eine Schleife zu erstellen, damit jedes Land in einem Options-Tag angezeigt wird.

<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>

Aber was ich bekomme ist "versuchen, Eigentum von Nicht-Objekt zu bekommen"

Also, weil ich nicht in PHP fortgeschritten bin, bin ich irgendwie blockiert mit dem, was passiert, wenn jemand bereit ist, mir zu helfen. Dankeschön

1
99Botch 24 Feb. 2020 im 00:41

5 Antworten

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

    ---------------Print Using For Each Loop-------------------

    foreach($countries as $countries)
    {
       echo $countries;
    }

    ---------------Print Using For Loop-------------------

    $count=count($countries);

    for($x=0;$x<$count;$x++)
    {
       echo $countries[$x];
    }
-2
Deepu Bhasin 23 Feb. 2020 im 21:57

Eine andere Möglichkeit besteht darin, nur eine for-Schleife zu verwenden. Mit dem Array $countries können Sie Folgendes tun:

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

Hoffe das hilft.

0
user9195389 24 Feb. 2020 im 00:29

Wenn Sie $countries as $country in einem foreach schleifen, Jedes Element von $countries wird in jeder Instanz der Schleife in $country gespeichert.

Das heißt, um jedes Land zu drucken, sieht eine Schleife folgendermaßen aus:

foreach ($countries as $country) {
  echo $country;
}
0
PaulS 23 Feb. 2020 im 21:47

Offensichtlich ist das der falsche Teil:

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

Weil foreach ($countries as $country) bedeutet "gehe in $countries und speichere bei jeder Iteration das aktuelle Element in $country", und daher sollte der Code folgendermaßen aussehen:

<?php foreach ($countries as $country) { ?>
    <option value="<?= $country ?>"><?= $country ?></option>
<?php } ?>
0
Berto99 23 Feb. 2020 im 21:46

$ country ist ein Array und Sie verwenden eine foreach-Schleife, die den Wert des Arrays auf $ country abruft. Sie nur um $ country zu wiederholen.

<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>

Hoffe das hilft dir :)

2
mail2bapi 23 Feb. 2020 im 21:45