2013-05-01 196 views
0

我有一个foreach循环得到它是从这个信息:嵌套PHP 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

错误是什么样的?给你一个很好的答案可能是有用的! – Ivo 2013-05-01 04:36:02

回答

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  
    ); 
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>'; 
    } 
} 

它需要一些格式,但你明白了。