Php 我的变量未被填充,仍为空

Php 我的变量未被填充,仍为空,php,date,compare,Php,Date,Compare,我在比较日期方面有问题。我通过API从数据库中提取一个日期。这些日期存储在一个数组中,因为一列包含多个日期,我必须循环查找下一个即将到来的日期。日期的格式为:“dd/mm/yy” $rawDate = $e->calendarsummary; $filter = preg_replace("/[a-z]/","", $rawDate); $createArray = explode(',', $filter); $dates = array_filter(array_map('trim',

我在比较日期方面有问题。我通过API从数据库中提取一个日期。这些日期存储在一个数组中,因为一列包含多个日期,我必须循环查找下一个即将到来的日期。日期的格式为:“dd/mm/yy”

$rawDate = $e->calendarsummary;
$filter = preg_replace("/[a-z]/","", $rawDate);
$createArray = explode(',', $filter);
$dates = array_filter(array_map('trim', $createArray));
foreach($dates as $d)
{
     $dateTime = DateTime::createFromFormat('dmy', $d);
     if($dateTime >= $now)
     {
          $finalDate = $dateTime;
          $total = $finalDate->format('l j/m/y');
          break;
     }
}
如果我在
$dateTime=dateTime::createFromFormat('dmy',$d)之后放置$dateTime的var_导出它返回“false”。所以我猜$dateTime是空的,尽管我的数组$dates填充正确

$dates的var_导出返回:

数组(0=>'15/06/13',1=>'16/06/13',)

现在,var导出值$1将返回今天的日期:'16/06/13'

所以我有点困惑为什么我的变量$DateTime仍然是空的

编辑:很明显,返回'false'意味着这是一个错误,所以在格式化数组中的日期时出错了

$dateTime = DateTime::createFromFormat('d/m/y', $d);
不是


您的日期格式为
d/m/y
,而不是
dmy
。请尝试以下操作:

$dateTime = DateTime::createFromFormat('d/m/y', $d);
当我这样做时,我得到:

class DateTime#1 (3) { public $date => string(19) "2013-06-15 17:17:12" public $timezone_type => int(3) public $timezone => string(3) "UTC" }

。。。如果
$dates
数组包含
15/06/13
等元素,请使用错误的日期格式,而不是
bool(false)

。例如:

$dateTime = DateTime::createFromFormat('d/m/y', $d);

您可以使用strotime作为另一种方法

$now = date('d/m/y');

foreach($dates as $d)
{

if(strtotime($d) >= strtotime($now))
{

       $finalDate = $dateTime;
       $total = date('l j/m/y', strtotime($d));
       break;
    }

}
$now = date('d/m/y');

foreach($dates as $d)
{

if(strtotime($d) >= strtotime($now))
{

       $finalDate = $dateTime;
       $total = date('l j/m/y', strtotime($d));
       break;
    }

}