повторить значение в массиве php

Я хочу сделать шаблон расписания, который повторяет значение каждые 4 дня …
Ниже скрипт php зацикливает дату с 1 сентября по 30 сентября. Я хочу повторять значение каждые 4 дня …
Например, мое значение (A, B, C, D), и я хочу повторять это каждые 4 дня … это значит

1/9 = A
2/9 = B
3/9 = C
4/9 = D
5/9 = A
6/9 = B
7/9 = C
8/9 = D

…… до 30/9 затем остановитесь …

<?php
// Set timezone
date_default_timezone_set('UTC');

// Start date
$start_date = '2015-09-01';
// End date
$end_date = '2015-09-30';

$value = "A";

while (strtotime($start_date) <= strtotime($end_date)) {
echo "$start_date <br>";
$start_date = date ("Y-m-d", strtotime("+1 day", strtotime($start_date)));

}
?>

1

Решение

Как насчет чего-то вроде этого:

$values = ['A', 'B', 'C', 'D'];

// Start date
$start_date = '2015-09-01';
// End date
$end_date = '2015-09-30';

$current_date = $start_date;
$index = 0;
while (strtotime($current_date) <= strtotime($end_date)) {
$i = $index % count($values);
echo "$current_date: $values[$i]\n";
$current_date = date("Y-m-d", strtotime("+1 day", strtotime($current_date)));
$index++;
}

% это оператор модуля, который возвращает остаток от деления. $a % $b возвращает остаток от $a деленное на $b, Так например 6 % 4 это 2, 7 % 4 это 3 и так далее.

1

Другие решения

И другая версия:

<?php
// Set timezone
date_default_timezone_set('UTC');

// Start date
$start_date = strtotime('2015-09-01');
// End date
$end_date = strtotime('2015-09-30');

$value = "A";

for ($date = $start_date; $date <= $end_date;
$date = strtotime("+1 day", $date)) {
$date_str = date("Y-m-d", $date);
echo "$date_str: $value<br>\n";
$value++;
if ($value > "D") {
$value = "A";
}
}
?>

Примечание. Хотя переменные имеют суффиксы даты, они содержат значения времени UNIX, а не какой-либо объект даты.

1

<?php
// Set timezone
date_default_timezone_set('UTC');

// Start date
$start_date = '2015-09-01';
// End date
$end_date   = '2015-09-30';

$value = array(
"A",
"B",
"C",
"D");
$i     = 0;
while (strtotime($start_date) <= strtotime($end_date)) {
echo "$start_date = " . $value[$i] . " <br>";
if ($i == count($value) - 1) {
$i = 0;
} else {
$i++;
}
$start_date = date("Y-m-d", strtotime("+1 day", strtotime($start_date)));

}
?>
0
По вопросам рекламы [email protected]