
med
Ich möchte eine generieren selectbox
Verwenden von zwei Arrays, von denen eines die Ländercodes und das andere die Ländernamen enthält.
Dies ist ein Beispiel:
<?php
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
foreach( $codes as $code and $names as $name ) {
echo '<option value="' . $code . '">' . $name . '</option>';
}
?>
Diese Methode hat bei mir nicht funktioniert. Irgendwelche Vorschläge?
foreach( $codes as $code and $names as $name ) { }
Das ist nicht gültig.
Sie wollen wahrscheinlich so etwas …
foreach( $codes as $index => $code ) {
echo '<option value="' . $code . '">' . $names[$index] . '</option>';
}
Alternativ wäre es viel einfacher, die Codes zu Ihrem Schlüssel zu machen $names
Reihe…
$names = array(
'tn' => 'Tunisia',
'us' => 'United States',
...
);
foreach
arbeitet jeweils nur auf einem Array.
Die Art und Weise, wie Ihr Array strukturiert ist, können Sie array_combine()
sie dann in ein Array von Schlüssel-Wert-Paaren foreach
dieses einzelne Array:
foreach (array_combine($codes, $names) as $code => $name) {
echo '<option value="' . $code . '">' . $name . '</option>';
}
Oder wie in den anderen Antworten zu sehen ist, können Sie stattdessen ein assoziatives Array hartcodieren.
Verwenden array_combine()
um die Arrays miteinander zu verschmelzen und über das Ergebnis zu iterieren.
$countries = array_combine($codes, $names);

Jakob Relk
Verwenden Sie ein assoziatives Array:
$code_names = array(
'tn' => 'Tunisia',
'us' => 'United States',
'fr' => 'France');
foreach($code_names as $code => $name) {
//...
}
Ich glaube, dass die Verwendung eines assoziativen Arrays im Gegensatz zur Verwendung der sinnvollste Ansatz ist array_combine()
denn sobald Sie ein assoziatives Array haben, können Sie einfach verwenden array_keys()
oder array_values()
um genau das gleiche Array zu erhalten, das Sie zuvor hatten.
array_map scheint dafür auch gut zu sein
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
array_map(function ($code, $name) {
echo '<option value="' . $code . '">' . $name . '</option>';
}, $codes, $names);
Weitere Vorteile sind:
-
Wenn ein Array kürzer als das andere ist, wird der Rückruf empfangen null
Werte, um die Lücke zu füllen.
-
Sie können mehr als 2 Arrays zum Durchlaufen verwenden.

nyedidikeke
Das hat bei mir funktioniert:
$codes = array('tn', 'us', 'fr');
$names = array('Tunisia', 'United States', 'France');
foreach($codes as $key => $value) {
echo "Code is: " . $codes[$key] . " - " . "and Name: " . $names[$key] . "<br>";
}

Schneebasen
Ihr Code wie dieser ist falsch, da foreach nur für ein einzelnes Array gilt:
<?php
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
foreach( $codes as $code and $names as $name ) {
echo '<option value="' . $code . '">' . $name . '</option>';
}
?>
Alternativ ändern Sie dazu:
<?php
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
$count = 0;
foreach($codes as $code) {
echo '<option value="' . $code . '">' . $names[count] . '</option>';
$count++;
}
?>
9873200cookie-checkZwei Arrays in jeder Schleifeyes
zwei Arrays eine Schleife
– mehov
10. Dezember 2021 um 15:53 Uhr