2013-05-01 3 views
0

У меня есть цикл Еогеаспа получает это информация от этого:вложенной PHP Еогеасп цикл

 $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

ответ

0

Почему вы не попробуйте & решить на входе. I.e.

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

Нужно некоторое форматирование, но вы получаете эту идею.

Смежные вопросы