0

我在 while 循环中有一个嵌套的 foreach 循环。我从匹配范围的 myqsl 文本字段中提取日期。唯一的问题是在提取文本字段后我无法按日期排序。如果我将相同的日期(在本例中为 02.01.2013)放入两个不同的文本字段中,它将在输出中显示为:

       TOUR 1  
       01.01.2013
    -> 02.01.2013 
    -> 03.01.2013
       04.01.2013

       TOUR 2
    -> 02.01.2013 
    -> 03.01.2013    

我不知道如何在循环后按日期($day)分组。我知道解决方案是为此创建一个数组,但是如何?

这是我的代码:

     $sql = "SELECT accommodation, start FROM circuits_".$_POST['year']." 
     WHERE start >='".$first."' AND start <= '".$last."' 
     ORDER BY start";
     $rows = $db->query($sql);

     while ($record = $db->fetch($rows)) { 

     $data_acc = explode(';',$record['accommodation'], -1);

     foreach($data_acc as $row_acc) {
     list($day,$name,$sgl,$dbl) = explode('|',$row_acc);

谢谢

4

2 回答 2

0

我想你正在寻找这样的东西?(替换ORDER BYGROUP BY

$sql = "SELECT accommodation, start FROM circuits_".$_POST['year']." 
 WHERE start >='".$first."' AND start <= '".$last."' 
 GROUP BY start";
 $rows = $db->query($sql);

 while ($record = $db->fetch($rows)) { 
    //do whatever..
 }
于 2013-05-05T16:51:18.940 回答
0

如果您在将数据存储到数据库之前将数据拆分为字段,您的开发将不那么复杂。

在不更改当前架构的情况下,您可以使用 uksort() 对数组进行后处理。使用 uksort 将允许您在比较日期之前解析日期。或者,您可以在将每个日期存储到列表之前将其转换为 ISO-8601,并使用更简单的 ksort()。

于 2013-05-05T18:14:08.423 回答