PHP中的日期分组

PHP中的日期分组,php,mysql,optimization,loops,time,Php,Mysql,Optimization,Loops,Time,我在MYSQL数据库中有一个日期和约会表 我想把它的内容打印到一个文件中,每个日期都有一个约会,我想把它们分组在它下面 e、 g 2011年1月28日的任命 上午10点去看望妈妈 中午12点吃蛋糕 我的表的格式是ID(int)、date(date)、Time(Time)、Description(varchar)、Place(varchar) 最好的方法是什么?我在考虑使用一个循环查找所有日期,然后在该循环中使用另一个循环查找每个日期的所有约会。有没有更有效的方法 谢谢您的时间,请原谅我对这个问

我在MYSQL数据库中有一个日期和约会表

我想把它的内容打印到一个文件中,每个日期都有一个约会,我想把它们分组在它下面

e、 g

2011年1月28日的任命 上午10点去看望妈妈

中午12点吃蛋糕

我的表的格式是ID(int)、date(date)、Time(Time)、Description(varchar)、Place(varchar)

最好的方法是什么?我在考虑使用一个循环查找所有日期,然后在该循环中使用另一个循环查找每个日期的所有约会。有没有更有效的方法


谢谢您的时间,请原谅我对这个问题的错误解释。

像这样的事情是我所知道的最理想的(假设您的内存中有足够的空间,这显然不应该是一个问题):

$query=“按日期从约会组中选择*”;
//由于下面的算法用于对日期进行排序,您甚至不需要
//我们需要一个小组。但这到底是怎么回事,对吧?
$result=mysqli_query($mysql,$query);
$appoinces=array();
while($row=mysqli\u fetch\u assoc($result))
{
如果(!isset($appointments[$row['date']]))
{
$appointments[$row['date']]=array();
}
$appointments[$row['date'][]=$row;
}
foreach($date=>$items的约会)
{
回显“{$date}”;
回声“
    ”; foreach($items作为$item) { echo“
  • {$item['Dime']}:{$item['Description']}”。 “@{$item['Place']}
  • ”; } 回声“
”; }
感谢您的帮助,我想知道第一个while循环的目的是什么,它只是将日期加载到数组中以便在下一节进行排序吗?实际上,
while
循环是排序和分组的目的;我们基本上要处理一组一维数据,并在其中添加一个维度(日期),因此当需要输出数据时(外部
foreach
循环),它们已经以这样一种方式分组了,可以很容易地使用嵌套循环来显示组,以及每个组的所有内容。(如果您想看到它的运行,请在外部
foreach
循环之前添加一个
var_dump($appointments);
,这样您就可以看到该数组是如何构造的;这可能会帮助您更好地理解这些循环的用途。)再次感谢您的帮助,今晚我学习了allot,最后一个问题,我想知道这行$appoints[$row['date']][]=$row,我以前从未见过这种语法,在谷歌上找不到更多的信息。谢谢因此,如果你仔细分析一下这个语句,
$row['date']
只是一个字符串,因此左侧看起来像是
$appointments['2011-04-16']
,这很有意义,因为我们对按日期索引约会很感兴趣。该运算符与此处显示的示例只是格式上的一个差异:,该示例只是将一个值分配给一个数组,该数组的索引是先前的最高索引+1。(基本上,这是一种表示“只需将其放在数组末尾”的快捷方式)
<h1>Appontments on 28/01/11<h1>
<p>10am Visit mum</p>
<p>12pm eat cake</p>
$query = "SELECT * FROM appointments GROUP BY `date`";
// Because of the algorithm used to sort dates below, you don't even really
// need the GROUP BY. But what the heck, right?

$result = mysqli_query($mysql, $query);

$appointments = array();

while ($row = mysqli_fetch_assoc($result))
{
    if (!isset($appointments[$row['date']]))
    {
        $appointments[$row['date']] = array();
    }

    $appointments[$row['date']] []= $row;
}

foreach ($appointments as $date => $items)
{
    echo "<h1>{$date}</h1>";

    echo "<ul>";

    foreach ($items as $item)
    {
        echo "<li>{$item['Dime']}: {$item['Description']} " . 
             "@ {$item['Place']}</li>";
    }

    echo "</ul>";
}