Search code examples
phparraysloopscodeigniter

For and Foreach Loops Print Multiple Results


This is result that I want:

January 2018  
Division A  
Division B  
Division C  

February 2018
Division A  
Division B  
Division C  

..so on..

In controller, this is the code:

$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();
}

Usually it works fine when I use foreach inside foreach inside foreach. In this case, I'm not sure how to save months in array other than using for loop.

With above code, it resulting:

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

So it prints months and divisions separately and multiply (?)

I have tried save divisions in for loop with this code:

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

When I do var_dump($data) divisions doesn't show anything. I understand that I also wrong using this approach.

What do I do wrong? What is the best approach to meet the result needed?


Solution

  • i think this will help you .

    $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);
    

    if this is what you are looking for result::

    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
                    )
    
            )
    
    )