PHP: инкремент переменной при изменении даты - PullRequest
0 голосов
/ 17 октября 2019

Я создаю инструмент расписания занятий, где пользователи могут загружать .csv-файл. Я хочу отслеживать даты с помощью переменной, чтобы пользователи могли загружать расписание, которое начинается, например, 15-го числа месяца. Поэтому я хотел бы увеличить переменную при изменении даты. Данные, которые я получаю от CSV, выглядят так:

array(
  array(
    '1',
    '2019-10-15',
    'Orientation / Team Building',
    '371',
    '',
    '0',
    '',
  ),
  array(
    '1',
    '2019-10-16',
    'Study Skills',
    '371',
    '',
    '0',
    '',
  ),
);

Я хотел бы вывести один день за раз:

$currentMonth = date('F');
$dayOfSchedule = 0;
while ($dayOfSchedule < sizeof($schedule[$currentMonth]){
   echo $schedule[$currentMonth][$dayOfSchedule][2]; //output the class etc.
}

, а затем увеличить $ dayOfSchedule при изменении дня,но я не знаю, как это сделать.

Любая помощь очень ценится!

1 Ответ

1 голос
/ 17 октября 2019

Вы, вероятно, ищете что-то вроде этого:

<?php

$data = array(
  array(
    1,
    '2019-10-16',
    'Study Skills',
    '371',
    '',
    0,
    '',
  ),
  array(
    1,
    '2019-10-16',
    'Mathematics',
    '371',
    '',
    0,
    '',
  ),
  array(
    1,
    '2019-10-15',
    'Orientation / Team Building',
    371,
    '',
    0,
    '',
  ),
);

// map rows according to the date
$schedule = array_reduce($data, function ($accu, $row) {
  $date = \DateTime::createFromFormat('Y-m-d', $row[1]);
  $accu[$date->format('F')][$date->format('j')][] = $row;
  return $accu;
}, []);

// sort the days and months
ksort($schedule);
array_walk($schedule, function (&$month_schedule) {
  ksort($month_schedule);
});

$today = date('j'); // day of month today
if (isset($schedule[date('F')])) {
  foreach ($schedule[date('F')] as $day => $rows) {
    if ((int) $day >= (int) $today) {
      echo "  Day of Month: $day\n";
      foreach ($rows as $key => $row) {
        echo "    Class({$key}): {$row[2]}\n";
      }
    }
  }
  echo "\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...