Iterar e imprimir sincrónicamente valores de dos matrices del mismo tamaño

Resuelto medk asked hace 54 años • 26 respuestas

Quiero generar selectboxusando dos matrices, una que contenga los códigos de país y otra que contenga los nombres de los países.

Esto es un ejemplo:

$codes = ['tn', 'us', 'fr'];
$names = ['Tunisia', 'United States', 'France'];

foreach( $codes as $code and $names as $name ) {
    echo '<option value="' . $code . '">' . $name . '</option>';
}

Este método no funcionó para mí. ¿Alguna sugerencia?

medk avatar Jan 01 '70 08:01 medk
Aceptado
foreach( $codes as $code and $names as $name ) { }

Eso no es válido.

Probablemente quieras algo como esto...

foreach( $codes as $index => $code ) {
   echo '<option value="' . $code . '">' . $names[$index] . '</option>';
}

Alternativamente, sería mucho más fácil hacer que los códigos sean la clave de su $namesmatriz...

$names = array(
   'tn' => 'Tunisia',
   'us' => 'United States',
   ...
);
alex avatar Dec 18 '2010 23:12 alex

foreachopera solo en una matriz a la vez.

La forma en que está estructurada su matriz, puede array_combine()dividirlos en una matriz de pares clave-valor y luego en foreachesa única matriz:

foreach (array_combine($codes, $names) as $code => $name) {
    echo '<option value="' . $code . '">' . $name . '</option>';
}

O, como se ve en las otras respuestas, puede codificar una matriz asociativa.

BoltClock avatar Dec 18 '2010 23:12 BoltClock

Úselo array_combine()para fusionar las matrices e iterar sobre el resultado.

$countries = array_combine($codes, $names);
Ignacio Vazquez-Abrams avatar Dec 18 '2010 23:12 Ignacio Vazquez-Abrams