【发布时间】:2011-11-09 02:21:10
【问题描述】:
我是 PHP 新手,为此访问了几个网站,但似乎无法彻底理解。
我有这个问题:
$result = mysql_query
("SELECT Country, State, City
FROM Address_Base
ORDER BY Country, State, City")
or die(mysql_error());
这给出了以下数据样本:
加拿大 - 州 1 - 苹果市
加拿大 - 州 2 - 城市葡萄
加拿大 - 州 1 - 苹果市
加拿大 - 州 2 - 城市咖啡
美国 - 州 1 - 城市斑马
美国 - 州 2 - 城市猫
美国 - 州 2 - 狮城
美国 - 州 3 - 城市鸟
美国 - 州 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 循环显示结果。看不懂。
如果有人可以为我解释一下,我将非常感激,我可以如何按照上面的要求分别对州和城市进行进一步分组?
【问题讨论】:
标签: php mysql multidimensional-array group-by