Home > Software engineering >  Laravel How to Make Array into a Collection?
Laravel How to Make Array into a Collection?

Time:02-02

Good day everyone, I have this function that can generate time interval and store them to $time.

if(strtotime($startTime) <= strtotime($endTime))
        {
          $this->time[$i]['room'] = '49';
          $this->time[$i]['day'] = 'T-Th';
          $this->time[$i]['c_time'] = $start.'-'.$end;
          $this->time[$i]['sy'] = '2021-2022';
          $this->time[$i]['sem'] = '1st';
        }

Sample output of $time is like this

1 => array:5 [▼
    "room" => "49"
    "day" => "T-Th"
    "c_time" => "07:00-08:30"
    "sy" => "2021-2022"
    "sem" => "1st"
  ]
  2 => array:5 [▼
    "room" => "49"
    "day" => "T-Th"
    "c_time" => "08:30-10:00"
    "sy" => "2021-2022"
    "sem" => "1st"
  ]
  3 => array:5 [▼
    "room" => "49"
    "day" => "T-Th"
    "c_time" => "10:00-11:30"
    "sy" => "2021-2022"
    "sem" => "1st"
  ]]

What should I do so that the output would be a collection->toArray() just like this

array:5 [▼
  0 => {#1416 ▼
     "room": "49"
     "day": "M-W"
     "c_time": "13:00-14:00"
     "sy": "2021-2022"
     "sem": "1st"
  }
  1 => {#1435 ▼
     "room": "49"
     "day": "M-W"
     "c_time": "11:30-13:00"
     "sy": "2021-2022"
     "sem": "1st"
  }
  2 => {#1433 ▼
     "room": "49"
     "day": "M-W"
     "c_time": "13:00-14:30"
     "sy": "2021-2022"
     "sem": "1st"
  }]

CodePudding user response:

Since you did not provide us with where you define the $time variable, I can't help you with any issues there. However, first, instantiate that variable as a collection.

$this->time = collect([]);

And then you can push in the following manner.

 $this->time->put($i, (object) [
    'room' => '49',
    'day' => 'T-Th',
    'c_time' => $start.'-'.$end,
    'sy' => '2021-2022',
    'sem' => '1st',
 ]);

CodePudding user response:

The simplest way to convert an array to collection is to use Laravel's collect() helper function. It takes an array as a parameter and returns a collection type.

For example if we have this array:

$a = [
       ['name' => "abc", 'age' =>45],
       ['name' => "xyz", 'age' =>20],
     ];
        dd(collect($a));

The output will be:

enter image description here

  •  Tags:  
  • Related