首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查php foreach中的多个日期时间是否相同

检查php foreach中的多个日期时间是否相同
EN

Stack Overflow用户
提问于 2018-03-09 15:04:44
回答 2查看 81关注 0票数 0

我想拆分日期相同和日期不同的项目。

代码语言:javascript
运行
复制
foreach ($cart->getAllItems() as $item)
{
$pickupDateTime = $item->getCartPickupDate().' '.$itemgetCartPickupTime(); 
$pickupDateTime = date('Y-m-d G:i:s', strtotime($pickupDateTime)) //2018-03-09 6:03:00 or 2018-03-09 21:10:00

// Split items here with same Date //

if(Dates are Same Condition){
$items_normal[]= $item->getProductId();
}else
{
//If Dates Are diffrent
$ites_special[]= $item->getProductId();
}

}

需要比较日期是否在第一个if条件和在其他部分具有不同日期的项目相同。

看看下面的数组,在这个数组中,我有相同的日期和时间,我需要俱乐部那些有相同的日期和时间。在下面的示例中,第三个必须属于第一个数组,因为它具有不同的时间,即6:05而不是6:03

代码语言:javascript
运行
复制
    Array
(
    [1] => Array
        (
            [product_id] => 742
            [qty] => 1
            [date] => 03/09/2018
            [time] => 06:03 AM
            [tax] => 0
            [splinst] => null
        )

    [2] => Array
        (
            [product_id] => 743
            [qty] => 1
            [date] => 03/09/2018
            [time] => 06:03 AM
            [tax] => 0
            [splinst] => null
        )

)

Array
(
    [3] => Array
        (
            [product_id] => 744
            [qty] => 1
            [date] => 03/09/2018
            [time] => 06:03 AM
            [tax] => 0.12
            [splinst] => null
        )

    [4] => Array
        (
            [product_id] => 757
            [qty] => 1
            [date] => 03/09/2018
            [time] => 06:05 AM
            [tax] => 0.25
            [splinst] => null
        )

)
EN

回答 2

Stack Overflow用户

发布于 2018-03-09 15:16:04

您可以将键中的日期存储到数组中,以对项进行分组:

代码语言:javascript
运行
复制
foreach ($cart->getAllItems() as $item)
{
    $pickupDateTime = $item->getCartPickupDate().' '.$itemgetCartPickupTime(); 
    $pickupDateTime = date('Y-m-d G:i:s', strtotime($pickupDateTime)) //2018-03-09 6:03:00 or 2018-03-09 21:10:00
    $items_special[$pickupDateTime][] = $item->getProductId();
}
foreach ($items_special as $date => $items) {
    if (count($items) > 1) {
        $items_normal = $items ;
        unset($items_special[$date]);
        break;
    }
}
$items_special = array_values($items_special);

因此,$items_special将如下所示:

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (
            [product_id] => 757
            [qty] => 1
            [date] => 03/09/2018
            [time] => 06:05 AM
            [tax] => 0.25
            [splinst] => null
        )

)

$items_normal看起来会像这样:

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (
            [product_id] => 742
            [qty] => 1
            [date] => 03/09/2018
            [time] => 06:03 AM
            [tax] => 0
            [splinst] => null
        )

    [1] => Array
        (
            [product_id] => 743
            [qty] => 1
            [date] => 03/09/2018
            [time] => 06:03 AM
            [tax] => 0
            [splinst] => null
        )

    [2] => Array
        (
            [product_id] => 744
            [qty] => 1
            [date] => 03/09/2018
            [time] => 06:03 AM
            [tax] => 0.12
            [splinst] => null
        )
)
票数 0
EN

Stack Overflow用户

发布于 2018-03-09 15:25:36

您应该使用DateTime对象:

代码语言:javascript
运行
复制
$pickupDateTime = $item->getCartPickupDate().' '.$itemgetCartPickupTime(); 
$pickupDateTime = new DateTime($pickupDateTime);

您可以比较两个相互关联的DateTime对象:

代码语言:javascript
运行
复制
if ($dateTimeObject1 == $dateTimeObject2) {
    // both have same date and time
}

请注意,在这里不应该使用严格比较(===),因为它将检查它是否是相同的对象,而不是DateTime是否相同。

如果只需要比较日期而忽略时间,可以在两个对象上调用setTime将时间重置为0:

代码语言:javascript
运行
复制
$dateTimeObject1->setTime(0, 0, 0);
$dateTimeObject2->setTime(0, 0, 0);
if ($dateTimeObject1 == $dateTimeObject2) {
    // both have the same date
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49188287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档