Foreach Inside foreach将值添加到数组

时间:2019-05-09 06:45:56

标签: php

在我的项目中,我试图禁用Datepicker中的预订天数。 我有预订表,所有记录的预订都存储在这里。而且在房地产详细信息页面之前,我正在从预订表中检查可用的日期。

在检查之前,我先计算了两次预订的日期。

问题是,同一个庄园可能有很多预订,但当我查询时,我只取得预订的第一条记录,因此其他日期显示可用。像下面这样,只需要预约1个日期

示例

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

以数组的形式进行预订,我试图在foreach中创建foreach并尝试将数据添加到变量中,但无法成功。

我的代码如下:

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;

    }

}

1 个答案:

答案 0 :(得分:2)

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

    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;