2016-02-18 31 views
1

我有一个事件列表循环,其中我从事件的日期和今天的日期变量。有一个必需的$ maindate,但也有同一个事件$ otherdates的其他日期,它比main晚。 我想设置在单独变量中设置的最新日期,并将其与今天的日期进行比较,以使if($ compareate> = $ today)仅控制未来事件的列表。比较变量,并设置第一个有价值

这里是我的变量:

$maindate = DateTime::createFromFormat('Ymd', get_field('date')); 
    $otherdates1 = DateTime::createFromFormat('Ymd', get_field('other_dates')); 
    $otherdates2 = DateTime::createFromFormat('Ymd', get_field('other_dates_2')); 
    $otherdates3 = DateTime::createFromFormat('Ymd', get_field('other_dates_3')); 
    $today = DateTime::createFromFormat('Ymd', date('Ymd')); 

/* I need to set up the first available variable here */  
$comparedate = $otherdates3 || $otherdates2 || $otherdates1 || $maindate; 

if ($comparedate >= $today) : 

/* list the future events */ 

我怎样才能让这种比较?

+1

或许这分钟()或最大()可以是有用的:$ comparedate =分钟($ otherdate3,$ otherdate2,$ otherdate1,$ maindate); – Ianis

+0

感谢您指出这一点,它实际上是最大的,正确的语法是:$ compareate = max($ maindate,$ otherdates1,$ otherdates2,$ otherdates3); – Gas

回答

1
$lastestDate = null; 
$datesSet = [$maindate, $otherdates1, $otherdates2, $otherdates3]; 
foreach($datesSet as $date) { 
    if($lastestDate == null || $lastestDate->getTimeStamp() < $date->getTimeStamp()) 
      $lastestDate = $date; 
} 
$comparedate = $lastestDate; 
+0

对不起,它不起作用。我发现上面评论的max()比较确实如此。谢谢你的时间。 – Gas

0

正如指出的Ianis,我不得不通过比较PHP最大运营商的变量,if语句获取最新的日期这样的。

该变量是:

$comparedate = max($maindate, $otherdates1, $otherdates2, $otherdates3);