【问题标题】:Nested php foreach loop嵌套的php foreach循环
【发布时间】:2013-05-01 02:59:46
【问题描述】:

我有一个 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';

            }


    }

如果一天中有多个天,我如何将天数合并在一起?

【问题讨论】:

  • 错误是什么样的?给你一个好的答案可能会有用!

标签: php


【解决方案1】:

您为什么不尝试解决输入问题。 即

     $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      
    ); 

【讨论】:

    【解决方案2】:

    执行此操作的简单方法不是使用嵌套的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>';
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      相关资源
      最近更新 更多