【问题标题】:Foreach Inside foreach Add Values to ArrayForeach 内部 foreach 将值添加到数组
【发布时间】:2019-05-09 06:45:55
【问题描述】:

在我的项目中,我试图禁用 datepicker 中的预定天数。 我有预订表,所有记录的预订都存储在这里。在房产详情页面之前,我正在查看预订表中的可用天数。

在检查之前,我会计算预订日期之间的时间。

问题是,同一个庄园可以有很多预订,但是当我查询时,我只记录了第一条预订记录,因此其他日期显示可用。如下所示,只需要预订 1 个日期

示例

Rezervation 1 Dates : 05.05.2019  - 10.05.2019
Rezervation 2 Dates : 05.05.2019  - 10.05.2019

预订以数组形式出现

我的代码如下所示;

function datebeetween($reservations){

    $data = [];

    if(!empty($reservations)) {

        foreach($reservationsas $rezer){

        $days = array();
        $start = Carbon\Carbon::parse($rezer['entry_date']);
        $end = Carbon\Carbon::parse($rezer['out_date']);
        $dateRange = Carbon\CarbonPeriod::create($start, $end);

            foreach ($dateRange as $date) {

            $days[] = $date->format('d-m-Y');

            }
            $data[] = $days;
        return $data;

        }
        }else{

    return $data;

    }

}

【问题讨论】:

    标签: php


    【解决方案1】:

    如果您正确缩进代码...

        foreach($reservations as $rezer){
            $days = array();
            $start = Carbon\Carbon::parse($rezer['entry_date']);
            $end = Carbon\Carbon::parse($rezer['out_date']);
            $dateRange = Carbon\CarbonPeriod::create($start, $end);
    
            foreach ($dateRange as $date) {
                $days[] = $date->format('d-m-Y');
            }
            $data[] = $days;
            return $data;
        }
    

    您会看到return 位于外部foreach() 内部,因此将其移出一层,它应该会返回所有数据。

            $data = array_unique(array_merge($data,$days));
        }
        return $data;
    

    【讨论】:

    • 是的,我的错。我移到了循环之外,但这次它显示数组 inxside 数组,如下所示; [["08-05-2019","09-05-2019","10-05-2019","11-05-2019"],["15-05-2019","16-05-2019 ","17-05-2019","18-05-2019"]]
    • 那么您是否需要构建$days 数组,因此只需将每个项目添加到$data 中,还是要将两个数组合并以便只有唯一的日期?
    • 是的兄弟,我想将两个数组合并为唯一的日子
    • 我做了一个简单的修复 - 在最后一个代码示例中,我将行更改为 $data = array_unique(array_merge($data,$days));
    • 非常感谢兄弟。现在它按预期工作:)
    猜你喜欢
    • 2015-03-28
    • 2019-03-31
    • 2017-07-12
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 2016-08-19
    • 1970-01-01
    相关资源
    最近更新 更多