Циклы For и Foreach Печать нескольких результатов - PullRequest
0 голосов
/ 02 ноября 2018

Это результат, который я хочу:

January 2018  
Division A  
Division B  
Division C  

February 2018
Division A  
Division B  
Division C  

..so on..

В контроллере это код:

$i = 0;
for ($dd = $start_date; $dd <= $last_date;) {

    $month_iteration = date("F Y",strtotime($dd));
    $data['months'][$i] = $month_iteration; // this successfully saves months in months array

    $dd = date('Y-m-d', strtotime($dd . 'next month')); // ctr++
    $i++;
}

foreach ($data['months'] as $m_key) { // for every month saved, I need to print all divisions
    $data['months'][$m_key]['divisions'] = $this->division_model->get_divisions();
}

Обычно это работает нормально, когда я использую foreach внутри foreach внутри foreach. В этом случае я не уверен, как сохранить месяцы в массиве, отличном от цикла for.

С приведенным выше кодом, это приводит к:

January 2018
error Invalid argument supplied for foreach()
February 2018
error Invalid argument supplied for foreach()
Array
Division A Division B Division C
Array
Division A Division B Division C

Таким образом, она печатает месяцы и деления отдельно и умножается (?)

Я попытался сохранить деление в цикле с этим кодом:

$data['months'][$i]['divisions'] = $this->division_model->get_divisions();

Когда я делаю var_dump($data), деление ничего не показывает. Я понимаю, что я тоже ошибаюсь, используя этот подход.

Что я делаю не так? Каков наилучший подход для достижения необходимого результата?

1 Ответ

0 голосов
/ 02 ноября 2018

Я думаю, это поможет вам.

$weeks['start_date'] = '2018/01/01';
$weeks['end_date'] = '2018/08/01';
$daterange = new DatePeriod(new DateTime($weeks['start_date']), new DateInterval('P1M'), new DateTime($weeks['end_date']));
$weekDayList = array();
foreach ($daterange as $date) {
    $weekDayList[$date->format("F Y")]['divisions'] =  ['division1','division2','division3'];
}

echo "<pre>";
print_r($weekDayList);

если это то, что вы ищете результат ::

Array
(
    [January 2018] => Array
        (
            [divisions] => Array
                (
                    [0] => division1
                    [1] => division2
                    [2] => division3
                )

        )

    [February 2018] => Array
        (
            [divisions] => Array
                (
                    [0] => division1
                    [1] => division2
                    [2] => division3
                )

        )

    [March 2018] => Array
        (
            [divisions] => Array
                (
                    [0] => division1
                    [1] => division2
                    [2] => division3
                )

        )

    [April 2018] => Array
        (
            [divisions] => Array
                (
                    [0] => division1
                    [1] => division2
                    [2] => division3
                )

        )

    [May 2018] => Array
        (
            [divisions] => Array
                (
                    [0] => division1
                    [1] => division2
                    [2] => division3
                )

        )

    [June 2018] => Array
        (
            [divisions] => Array
                (
                    [0] => division1
                    [1] => division2
                    [2] => division3
                )

        )

    [July 2018] => Array
        (
            [divisions] => Array
                (
                    [0] => division1
                    [1] => division2
                    [2] => division3
                )

        )

)
...