Iterar e imprimir sincrónicamente valores de dos matrices del mismo tamaño
Quiero generar selectbox
usando 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?
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 $names
matriz...
$names = array(
'tn' => 'Tunisia',
'us' => 'United States',
...
);
foreach
opera 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 foreach
esa ú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.
Úselo array_combine()
para fusionar las matrices e iterar sobre el resultado.
$countries = array_combine($codes, $names);