在foreach上显示第一个和最后一个元素

时间:2015-05-07 11:56:21

标签: php date datetime foreach

我有这个小部分:

foreach($events as $key=>$event){   
    if($event->order ==  $orderss){

        $id = $event->id;
        $date = new DateTime($event->start);
        $start = $date->format('H:i Y-m-d ');
        $date_end = new DateTime($event->end);
        $end = $date_end->format('H:i Y-m-d ');
        echo $start.' - '.$end.'<br>';

    }       
}

它正在返回下一个值:

18:00 2015-04-29 - 19:00 2015-04-29 

19:00 2015-04-29 - 20:00 2015-04-29 

20:00 2015-04-29 - 21:00 2015-04-29 

21:00 2015-04-29 - 22:00 2015-04-29 

11:00 2015-05-11 - 12:00 2015-05-11

12:00 2015-05-11 - 13:00 2015-05-11 

13:00 2015-05-11 - 14:00 2015-05-11

我的问题是,如果我可以使用值18:00 2015-04-2922:00 2015-04-29

来覆盖foreach

11:00 2015-05-1114:00 2015-05-11

这是在一个表格列中,在foreach上创建一个包含这些日期的新列,如果我使用$ key == 0,那么只有第一列填满,其余的则保持为空

5 个答案:

答案 0 :(得分:1)

使用$key。假设$event是一个索引从0count($event)-1的数组:

foreach($events as $key=>$event){   
    if($event->order ==  $orderss && (($key == 0) || ($key == count($event)-1))){
        $id = $event->id;
        $date = new DateTime($event->start);
        $start = $date->format('H:i Y-m-d ');
        $date_end = new DateTime($event->end);
        $end = $date_end->format('H:i Y-m-d ');
        echo $start.' - '.$end.'<br>';
     }       
  }

答案 1 :(得分:1)

如果您只想要数组的第一个和最后一个值,可以使用array_shift和array_pop。

$start=new DateTime(array_shift( $events ));
$end=new DateTime(array_pop($events));

答案 2 :(得分:0)

使用end($ array);对于最后一个元素和第一个元素重置($ array);

答案 3 :(得分:0)

第一个值 -

$first = current($events);

为最后一个值 -

$last = end($events);

答案 4 :(得分:0)

//Get the last element
end($events); $last_key = key($events);
//Reset and get the first element
reset($events); $first_key = key($events);

//Now get the dates
$first_date = $events[$first_key];
$last_date = $events[$last_key];

echo $first_date . '<br />' . $last_date;

我先拿到最后一个,因为我之后无论如何重置指针。这样你也可以获得以后可能派上用场的钥匙。