2013-05-01 276 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>'; 
    } 
} 

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