Я новичок в PHP и посетил несколько сайтов для этого, но, похоже, не совсем понял.
У меня есть этот запрос:
$result = mysql_query
("SELECT Country, State, City
FROM Address_Base
ORDER BY Country, State, City")
or die(mysql_error());
Это дает следующую выборку данных:
Канада - Штат 1 - Город Яблоко
Канада - Штат 2 - Город Виноград
Канада - Штат 1 - Город Apple
Канада - Штат 2 - Городской кофе
США - Штат 1 - Город Зебра
США - Штат 2 - Городской кот
США - Штат 2 - Город Лев
США - штат 3 - City Bird
США - Штат 1 - Город Зебра
Моя цель состоит в том, чтобы сгруппировать города по соответствующим штатам и подсчитать города, сгруппировать штаты по соответствующим странам и группировать аналогичные страны и произвести что-то вроде этого
Canada -
{
State 1 - City Apple (2)
State 2 - City Coffee (1), City Grapes (1)
}
USA -
{
State 1 - City Zebra (2)
State 2 - City Cat (1), City Lion (1)
State 3 - City Bird (1)
}
С какого-то другого сайта я получил это:
$combinedResults = array();
while ($rec=mysql_fetch_assoc($result))
{
$combinedResults[$rec['Country']][] = array
(
'S' => $rec['State'],
'C' => $rec['City']
);
}
foreach(array_keys($combinedResults) as $Country)
{
echo '<div class="country">'.$Country.'</div>';
foreach($combinedResults[$Country] as $Set)
{
echo $Set['S'].'<br/>'.$Set['C'].'<br/><br/>';
}
}
Это только группы похожих стран, а не штатов и городов. Я предполагаю, что приведенный выше фрагмент кода пытается предварительно обработать данные в каком-то многомерном массиве и иметь цикл for для отображения результатов. Я не могу понять это ясно.
Я был бы очень благодарен, если бы кто-то мог объяснить это для меня и как я могу дополнительно сгруппировать штаты и города соответственно, как указано выше?