用符号(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>
&#8226; A country was invaded.<br>
&#8226; 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, ' &#8226; ', implode('<br>&#8226; ', $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, ' &#8226; ', implode('<br>&#8226; ', $event);
}
$prevYear = null;
while ($row = $stm->fetch())
{
    $Year = $row['Year'];
    if ($Year == $prevYear) {
        $YearStr = '&#8226; ';
    } else {
        $YearStr = $Year . ' $#8211; ';
        $prevYear = $Year;
    }
    $Brief[] = $YearStr.$row['Brief'];
}