我有一个foreach循环从这里得到它的信息:
$eventarray[] = array(
"month" => $cal_months[$event_month],
"day1" => $event_day1,
"title" => $title,
"desc" => html_entity_decode($article),
"month_link" => strtolower($event_month),
"link" => $event_link
);
对于数组的每次迭代,它会吐出一个事件div,它包含标题,描述和实际事件页面的链接。这样做的问题是,如果同一天有两个事件,我会在当天为每个事件获得两个单独的div。我想做的是将事件放在同一个div中,如果它们是在同一天。
我“想”我必须嵌套第二个foreach循环,但是当我这样做时它会出错。
这就是我正在尝试的,我知道这是错的,但我被困住了:
foreach($eventarray as $value){
if($value['month'] == $thismonth){
$day[] = $value['day1'];
echo $value['title'];
echo $value['desc'];
echo $value['link'];
foreach($day as $day_value){
echo 'test';
}
}
如果一天中有一个以上的日子,我如何得到加入的日子?
答案 0 :(得分:0)
为什么不试试&解决输入问题。 即。
$eventarray[$event_day1][] = array(
"month" => $cal_months[$event_month],
"day1" => $event_day1,
"title" => $title,
"desc" => html_entity_decode($article),
"month_link" => strtolower($event_month),
"link" => $event_link
);
答案 1 :(得分:0)
执行此操作的简单方法不是使用嵌套foreach
,而是使用两个foreach
循环,一个接一个。在第一个中,将当天的事件放入一个新数组,然后在第二个中打印该数组。
// This will actually be a 2-dimensional array
$events_by_day = array();
// Get this month's events and group by day.
foreach($eventarray as $value){
if($value['month'] == $thismonth){
// Push this event into the $events_by_day[<DAY>] array
$events_by_day[$value['day1']][] = $value;
}
}
// For each day, print it.
foreach($events_by_day as $day => $events_today){
if (count($events_today) > 0){
echo '<div>';
echo "$month $day";
// Get today's events
foreach($events_today as $event){
echo $event['title'];
echo $event['desc'];
echo $event['link'];
}
echo '</div>';
}
}
它需要一些格式化,但你明白了。