我对php有些陌生,并且在过去的几个小时里一直在喋喋不休地试图解决这个问题。我需要从数据库中按州排序城市。我使用以下查询来检索数据集:
SELECT state, city FROM table ORDER BY state ASC, city ASC
这显示了我在phpMyAdmin中作为查询运行时所需的信息,但是我似乎无法弄清楚如何将其放入数组并循环它。
我需要输出的格式是
CA
Los Angeles
San Francisco
New York
Brooklyn
Buffalo
我还需要能够让每个城市都返回一个链接,但我很确定我可以用“.item ['$ city']来做到这一点。”
非常感谢任何帮助!
答案 0 :(得分:3)
谢谢大家!
使用以下代码结束:
$query = ('SELECT DISTINCT state,city FROM table ORDER BY state ASC, city ASC');
$result = mysql_query($query);
$states = array();
while ($row = mysql_fetch_assoc($result)) {
if (!isset($exists[$row['state']])) {
echo "<div id='location'><div class='state'><p>" . $row['state'] . "</p>";
$exists[$row['state']] = true;
}
echo "<div class='city'><p><a href='?city=".$row['city']."' target='_blank'>".$row['city']."</a></p></div>";
}
答案 1 :(得分:1)
MySQL会给你一个清单。您需要检查当前状态是否与上一个状态相同。如果是,继续列出城市,否则,开始新的细分,打印州和城市...
类似Java的代码:
lastState = "";
while(haveNext()) {
if (currentRow.state!=lastState) println(currentRow.state);
println(currentRow.city);
lastState=currentRow.state;
}
答案 2 :(得分:1)
结果已经排序,这应该有效:
$output = array();
foreach ($input as $value)
{
if (array_key_exists($value['state'], $output) !== true)
{
$output[$value['state']] = array();
}
$output[$value['state']][] = $value['city'];
}
print_r($output);
<强>输入:强>
$input = array
(
0 => array
(
'state' => 'CA',
'city' => 'Los Angeles',
),
1 => array
(
'state' => 'CA',
'city' => 'San Francisco',
),
2 => array
(
'state' => 'New York',
'city' => 'Brooklyn',
),
3 => array
(
'state' => 'New York',
'city' => 'Buffalo',
),
);
输出(@ CodePad):
Array
(
[CA] => Array
(
[0] => Los Angeles
[1] => San Francisco
)
[New York] => Array
(
[0] => Brooklyn
[1] => Buffalo
)
)
答案 3 :(得分:0)
像...一样的东西。
<?php
$result = mysql_query("SELECT state,city FROM table ORDER BY state ASC, city ASC");
$exists = array();
while ($row = mysql_fetch_assoc($result)) {
if (!isset($exists[$row['state']])) {
echo '<p>' . $row['state'] . '</p>';
$exists[$row['state']] = true;
}
echo '<p style="margin-left: 5px;">' . $row['city'] . '</p>';
}
?>