Хорошо, что касается ваших комментариев, вы можете сделать что-то вроде этого: Получить события, подобные предложенному Дэйвеком (обратите внимание на ORDER BY
!)
$events = mysql_fetch_assoc(mysql_query ("SELECT id,title,date WHERE date BETWEEN '2009-01-01' AND '2009-01-31' ORDER BY date asc"));
Тогда вы получили события, упорядоченные по дате. Для вывода вы можете сделать это:
$last_date = null;
foreach($event in $events) {
if($last_date !== $event['date']) {
echo 'Events for day ' . $event['date'] . ": \n";
$last_date = $event['date'];
}
echo $event['title'] . "\n"
}
Примечание: это всего лишь грубый набросок, вы, конечно, должны отрегулировать вывод, но он должен дать вам правильное представление.
Вывод будет выглядеть так (в моем примере):
Events for 2009-01-01:
Event 1
Event 2
Events for 2009-01-02:
Event 1
.
.
.
Редактировать после комментария:
Вы можете написать свою собственную функцию:
function get_events($date, $events) {
$result = array();
foreach($event in $events) {
if($event['date'] == $date) {
$result[] = $event;
}
}
return $result;
}
Но так вы будете искать в массиве каждый день снова и снова. Вы можете улучшить его, удалив уже найденные события из массива $events
. Так что каждый раз, когда вы ищете в меньшем массиве. Но я сделал бы это только в случае проблем с производительностью.