PHP解析循环数天,但希望限制输出的数量

PHP解析循环数天,但希望限制输出的数量,php,parsing,limit,icalendar,limits,Php,Parsing,Limit,Icalendar,Limits,因此,我使用下面的长代码列出即将发生的事件。它询问您要显示事件的天数,比如说10天,并在这10天内将尽可能多的事件分组。我更改了代码,因此给定日期下不只有一个标题和多个事件,而是显示每个事件日期。然而,它仍然给我未来10天的所有事件。我想限制代码,以便在接下来10天的众多事件中,它只返回/显示/输出6个事件 我很确定我需要改变的是: 对于$i=0$i在其中的某个位置放置一个计数器,以跟踪已输出的事件数,并在达到限制后终止循环: for ($i=0; $i<$days_to_displ

因此,我使用下面的长代码列出即将发生的事件。它询问您要显示事件的天数,比如说10天,并在这10天内将尽可能多的事件分组。我更改了代码,因此给定日期下不只有一个标题和多个事件,而是显示每个事件日期。然而,它仍然给我未来10天的所有事件。我想限制代码,以便在接下来10天的众多事件中,它只返回/显示/输出6个事件

我很确定我需要改变的是:
对于$i=0$i在其中的某个位置放置一个计数器,以跟踪已输出的事件数,并在达到限制后终止循环:

   for ($i=0; $i<$days_to_display; $i++) 
  {

      $thisday = date("Ymd", $thisdate);

      if (isset($master_array[$thisday])) 
   {
          echo "<br/>";

     for($k=0;$k<=$noofevents;$k++) //Where $noofevents is the number of events! 
    {
foreach($master_array[($thisday)] as $event_start_time => $event_set)
     {
     foreach ($event_set as $event_id => $event_info)
        {
        // Where are we?
        //    date is $thisdate
        //    time is $event_start_time
        //    event is $event_id;

        if (! (($event_info['event_text'] == '**PRIVATE**') && ($show_private_events == FALSE)))
           {
// event title
            echo "<li>";
           echo "<span class='bold_text'>" . stripslashes(urldecode($event_info['event_text'])) . "</span><br/>";


// event time range, if not an all-day event
           echo " <span style='display: block;'>". date("D. F jS", $thisdate) . "";

            if (! (($event_info['event_start'] == '0000') && ($event_info['event_end'] == '0000')))
                {
              echo ":
" . date("g:ia", $event_info['start_unixtime']) . " - " . date("g:ia", $event_info['end_unixtime'])."</span>";
              }

// event location
           if (strlen($event_info['location']) > 0)
              {
              echo " <span class='italic_text'>" . stripslashes(urldecode($event_info['location'])) . "</span>";
              }


            /*  
            if ( (($event_info['event_start'] == '0000') && ($event_info['event_end'] == '0000')))
                {
              echo "all day";
              }*/

           // event description.

            echo "</li>";
           } // IF private event AND we don't want to see those
        }// END enter this event
     } // END foreach event 
   }  // END for x events
  } //END if isset
 }//END for days

这可能不是最好的方法!但您可以在foreach上方添加另一个for循环,例如:


我没法让它工作。它仍然会限制显示的天数,而不是事件。我在代码中移动了它,这是我得到的唯一效果。:/这可能是一个用户错误,尽管我尝试此操作时未显示任何内容。我认为它需要$days\u来显示线路才能工作。我不知道?谢谢您的尝试。是的,您之前和之后的所有代码都应该是相同的,只需在此位置添加此代码,不删除任何当前代码,它应该可以正常工作。我已编辑了代码,因此您可以复制粘贴,但您可能需要再次检查卷曲
$limit = 6;
$displayed = 0;

foreach(...) {
   if (show_event()) {
      ... show event ...
      $displayed++;
      if ($displayed >= $limit) {
          break;
      }
   }
}
   for ($i=0; $i<$days_to_display; $i++) 
  {

      $thisday = date("Ymd", $thisdate);

      if (isset($master_array[$thisday])) 
   {
          echo "<br/>";

     for($k=0;$k<=$noofevents;$k++) //Where $noofevents is the number of events! 
    {
foreach($master_array[($thisday)] as $event_start_time => $event_set)
     {
     foreach ($event_set as $event_id => $event_info)
        {
        // Where are we?
        //    date is $thisdate
        //    time is $event_start_time
        //    event is $event_id;

        if (! (($event_info['event_text'] == '**PRIVATE**') && ($show_private_events == FALSE)))
           {
// event title
            echo "<li>";
           echo "<span class='bold_text'>" . stripslashes(urldecode($event_info['event_text'])) . "</span><br/>";


// event time range, if not an all-day event
           echo " <span style='display: block;'>". date("D. F jS", $thisdate) . "";

            if (! (($event_info['event_start'] == '0000') && ($event_info['event_end'] == '0000')))
                {
              echo ":
" . date("g:ia", $event_info['start_unixtime']) . " - " . date("g:ia", $event_info['end_unixtime'])."</span>";
              }

// event location
           if (strlen($event_info['location']) > 0)
              {
              echo " <span class='italic_text'>" . stripslashes(urldecode($event_info['location'])) . "</span>";
              }


            /*  
            if ( (($event_info['event_start'] == '0000') && ($event_info['event_end'] == '0000')))
                {
              echo "all day";
              }*/

           // event description.

            echo "</li>";
           } // IF private event AND we don't want to see those
        }// END enter this event
     } // END foreach event 
   }  // END for x events
  } //END if isset
 }//END for days