PHP Почему только один массив возвращается в многомерном массиве после foreach - PullRequest
0 голосов
/ 21 января 2020

Так что я пытаюсь создать многомерный массив, вставляя даты под свои дни. Однако дни показывают только одну из дат, поступающих из базы данных. Это также похоже на его повторение. В конце концов моя цель состоит в том, чтобы свести все даты к их уважаемому дню.

Что я пробовал: -array_pu sh, пытаясь записать новые данные в массив. -A для l oop

Код для обработки

$currentDate = new Date();

        $month = $currentDate->getCurrentDate()->format("m");
        $year = $currentDate->getCurrentDate()->format("Y");

        $availableCollection = new AvailabilitiesCollection();


        try {
            $availableCollection->add(Availability::getByMonthAndYear($this->db, $month, $year));
            $availabilities = $availableCollection->get();
            foreach ($availabilities as $this->availability ){
                $this->date = new \DateTime($this->availability['date']);
                $this->dayLabel = $this->date->format('D');
                $this->dataDb[] = $this->dayLabel;
            }

            $count = array_count_values($this->dataDb);


            foreach ($availabilities as $this->availability) {
                $this->date = new \DateTime($this->availability['date']);
                $this->dayLabel = $this->date->format('D');

                $this->insertAvailabilityInDays[$this->dayLabel] = array();

                $availableData = array(
                        'id' => $this->availability['reservation_id'],
                        'date' => $this->availability['date'],
                        'start_at' => $this->availability['start_at'],
                        'end_at' => $this->availability['end_at']
                    );

                array_push($this->insertAvailabilityInDays[$this->dayLabel], $availableData);

//                for($i = 0; $i < $count[$this->dayLabel]; $i++){
//                    $availableData = array(
//                        'id' => $this->availability['reservation_id'],
//                        'date' => $this->availability['date'],
//                        'start_at' => $this->availability['start_at'],
//                        'end_at' => $this->availability['end_at']
//                    );
//
//                    array_push($this->insertAvailabilityInDays[$this->dayLabel], $availableData);
//                }

                var_dump($this->insertAvailabilityInDays);
                continue;




            }


//            var_dump($this->insertAvailabilityInDays);
//            exit;


        } catch (\Exception $e) {
            $this->logger->error($e);
        }

Данные в моей базе данных:

+----------------+------------+----------+--------+
| reservation_id |    date    | start_at | end_at |
+----------------+------------+----------+--------+
|              6 | 2020-01-22 |  12:30   | 12:45  |
|              7 | 2020-01-20 |  12:50   | 13:00  |
|              8 | 2020-01-22 |  15:45   | 16:00  |
|              9 | 2020-01-21 |  14:45   | 15:00  |
+----------------+------------+----------+--------+

Мой токовый выход:

array (size=1)
  'Wed' => 
    array (size=4)
      'id' => string '6' (length=1)
      'date' => string '2020-01-22' (length=10)
      'start_at' => string '12:30:00' (length=8)
      'end_at' => string '12:45:00' (length=8)
/var/source/app/classes/System/Handlers/CalendarHandler.php:87:
array (size=2)
  'Wed' => 
    array (size=4)
      'id' => string '6' (length=1)
      'date' => string '2020-01-22' (length=10)
      'start_at' => string '12:30:00' (length=8)
      'end_at' => string '12:45:00' (length=8)
  'Mon' => 
    array (size=4)
      'id' => string '7' (length=1)
      'date' => string '2020-01-20' (length=10)
      'start_at' => string '12:50:00' (length=8)
      'end_at' => string '13:00:00' (length=8)
/var/source/app/classes/System/Handlers/CalendarHandler.php:87:
array (size=2)
  'Wed' => 
    array (size=4)
      'id' => string '8' (length=1)
      'date' => string '2020-01-22' (length=10)
      'start_at' => string '15:45:00' (length=8)
      'end_at' => string '16:00:00' (length=8)
  'Mon' => 
    array (size=4)
      'id' => string '7' (length=1)
      'date' => string '2020-01-20' (length=10)
      'start_at' => string '12:50:00' (length=8)
      'end_at' => string '13:00:00' (length=8)
/var/source/app/classes/System/Handlers/CalendarHandler.php:87:
array (size=3)
  'Wed' => 
    array (size=4)
      'id' => string '8' (length=1)
      'date' => string '2020-01-22' (length=10)
      'start_at' => string '15:45:00' (length=8)
      'end_at' => string '16:00:00' (length=8)
  'Mon' => 
    array (size=4)
      'id' => string '7' (length=1)
      'date' => string '2020-01-20' (length=10)
      'start_at' => string '12:50:00' (length=8)
      'end_at' => string '13:00:00' (length=8)
  'Tue' => 
    array (size=4)
      'id' => string '9' (length=1)
      'date' => string '2020-01-21' (length=10)
      'start_at' => string '14:45:00' (length=8)
      'end_at' => string '15:00:00' (length=8)

Я ожидаю, что каждая дата входит в массив вместе с их днем. Вместе со своей базой данных.

Например:

'Wed' => 
    array (size=4)
    0 =>
      'id' => string '6' (length=1)
      'date' => string '2020-01-22' (length=10)
      'start_at' => string '12:30:00' (length=8)
      'end_at' => string '16:45:00' (length=8)
    1 =>
      'id' => string '8' (length=1)
      'date' => string '2020-01-22' (length=10)
      'start_at' => string '15:45:00' (length=8)
      'end_at' => string '16:00:00' (length=8)

1 Ответ

0 голосов
/ 21 января 2020

Как упомянуто @TomShaw, действительно изменение $this->insertAvailabilityInDays[$this->dayLabel][] = $availableData решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...