Je ne sais pas si vous recherchez des erreurs, préparez ou évitez vos requêtes, mais faites-le s'il vous plaît.
Pour générer votre tableau, vous pouvez le faire avec ceci :
$list = [];
$countries = $link->query("SELECT country_id, country_name FROM countries ...");
while ($country_row /*fetch from $countries*/) {
$country_id = $country_row['country_id'];
$country_info = [
'country_id' => $country_id,
'country_name' => $country_row['country_name'],
'country_cities' => []
];
$cities_stmt = "SELECT city_id, city_name FROM cities where $country_id...";
$cities = $link->query($cities_stmt);
while ($city_row /*fetch from $cities*/) {
$city_id = $city_row['city_id'];
$country_info['country_cities'][$city_id] = [
'city_id' => $city_id,
'city_name' => $city_row['city_name']
];
}
$list[$country_id] = $country_info;
}
Pour afficher votre tableau vous pouvez faire :
foreach ( $list as $country_id => $country_info ) {
echo "Country ID: $country_id<br />";
echo 'Country Name: ' . $country_info['country_name'] . '<br />';
echo 'Country Cities:<br />';
$cities = $country_info['country_cities'];
foreach ( $cities as $city_id => $city_info ) {
echo " City ID: $city_id<br />";
echo ' City Name: ' . $city_info['city_name'] . '<br />';
}
echo '<br />';
}
De plus, si vous connaissez l'identifiant du pays ou de la ville, vous pouvez :
echo 'City Name: ' . $list[$country_id]['country_cities'][$city_id]['city_name'] . '<br />';