Php 用于foreach的DateTime函数

Php 用于foreach的DateTime函数,php,datetime,Php,Datetime,我这里有一个简单的代码,它将DateTime格式转换为Y-m-d。这是我的密码: $var = '2015-11-06'; $images = $db->query("SELECT * FROM images"); foreach ($images as $i) { $created_at = $i['created_at']; } $date = new DateTime($created_at); $newDate = $formattedDate->format('Y

我这里有一个简单的代码,它将
DateTime
格式转换为
Y-m-d
。这是我的密码:

$var = '2015-11-06';

$images = $db->query("SELECT * FROM images");

foreach ($images as $i) {
  $created_at = $i['created_at'];
}

$date = new DateTime($created_at);
$newDate = $formattedDate->format('Y-m-d');
我数据库中的日期格式如下(
2015-11-06 03:07:15


我想做的是在
$newDate
中获取所有等于
$var
的值,并使用
foreach
来回送所有相等的值。我怎么可能做到这一点呢?

使用strotime将日期转换为unix时间戳并进行比较。

我不太确定您在问什么,但可能就是这个问题。您必须在循环内进行格式化

foreach ($images as $i) {
    $date = new DateTime($i['created_at']);
    $dateFormatted = $date->format('Y-m-d');
    if ($dateFormatted == $var) {
        echo $dateFormatted;
    }
}
您也可以在数据库查询中执行此操作:

$images = $db->query("SELECT * FROM images 
                    WHERE created_at BETWEEN '$var 00:00:00' AND '$var 23:59:59'");

不知道你想做什么
$newDate
不是数组,它只是一个日期。由于您在循环外部调用
new DateTime($created_at)
,因此您只使用最后一个图像的创建时间。您也可以只编写
$created_at=$images[count($images)-1]['created_at']
。您的日期格式永远不会等于
$var
,因为您使用
-
分隔符进行格式化,但是
$var
具有
/
分隔符。为什么不基于日期搜索数据库?您可以使用以下选项搜索数据库:
WHERE date(created_at)='$var'
,它只是将您想要的内容直接翻译成代码。