用符号(MySQL/PHP)替换DB查询中的冗余日期
我有一个数据库查询,它按时间顺序显示历史事件列表,如下所示:用符号(MySQL/PHP)替换DB查询中的冗余日期,php,mysql,Php,Mysql,我有一个数据库查询,它按时间顺序显示历史事件列表,如下所示: (URL = MySite/Calendar/January_1)<br> On this day in history...<br> 1968 - A volcano erupted.<br> 1968 - A country was invaded.<br> 1968 - Someone had a hit song.<br> 1970 - A famous person
(URL = MySite/Calendar/January_1)<br>
On this day in history...<br>
1968 - A volcano erupted.<br>
1968 - A country was invaded.<br>
1968 - Someone had a hit song.<br>
1970 - A famous person was born.
1968 - A volcano erupted.<br>
• A country was invaded.<br>
• Someone had a hit song.<br>
1970 - A famous person was born.
然后,我显示了一个历史事件列表,像这样
echo join( $Brief, '<br>' );
不管怎样,我的目标是一样的;用某种“丁巴”或符号替换多余的日期(年)。看起来您需要在输出前对结果集进行分组:
$events = array();
while($row = $stm->fetch()){
$year = $row['Year']; // current year
if(!isset($events[$year]){ // if no such group
$events[$year] = array(); // create group
}
$events[$year][] = $row['Brief']; // add data to year group
}
// Output:
foreach($events as $year => $event){
echo $year, ':<br>'; // show year;
foreach($event as $data){
echo $data, '<br>'; // show row;
}
}
$events=array();
而($row=$stm->fetch()){
$year=$row['year'];//当前年份
如果(!isset($events[$year]){//如果没有这样的组
$events[$year]=array();//创建组
}
$events[$year][=$row['short'];//将数据添加到年份组
}
//输出:
foreach($events作为$year=>$event){
echo$year':
;//显示年份;
foreach($event as$data){
echo$data,“
”;//显示行;
}
}
此外,您还可以轻松地更改模型的输出:
foreach($events as $year => $event){
echo $year, ' • ', implode('<br>• ', $event);
}
foreach($events作为$year=>$event){
echo$year,•;',内爆(“
•;”,$event);
}
另外,您不需要在字符串的每一端连接
”
。使用一个变量来保存前一行中的年份。每次通过循环,检查当前年份是否与变量相同;如果是,则显示丁巴特而不是年份。这不是很简单吗?对您来说很简单;我仍在试图找出如何照你的建议去做。也许我玩一会儿后会得到它。(好吧,那是另一种方法。)++@DavidBlomstrom Barmar的一个更快。但我的产品能更好地控制产量。如果包装在
标签中。选择解决问题的任何答案作为解决方案,如果其中有帮助的话。干杯
$events = array();
while($row = $stm->fetch()){
$year = $row['Year']; // current year
if(!isset($events[$year]){ // if no such group
$events[$year] = array(); // create group
}
$events[$year][] = $row['Brief']; // add data to year group
}
// Output:
foreach($events as $year => $event){
echo $year, ':<br>'; // show year;
foreach($event as $data){
echo $data, '<br>'; // show row;
}
}
foreach($events as $year => $event){
echo $year, ' • ', implode('<br>• ', $event);
}
$prevYear = null;
while ($row = $stm->fetch())
{
$Year = $row['Year'];
if ($Year == $prevYear) {
$YearStr = '• ';
} else {
$YearStr = $Year . ' $#8211; ';
$prevYear = $Year;
}
$Brief[] = $YearStr.$row['Brief'];
}