@eLig

PHP Заполнить массив с шагом от имеющихся значений в массиве?

Здравствуйте!
В наличии массив на 14 элементов, элементы массива содержат пустоту. Нумерация ключей с 8го по 22ой.
Когда в массиве появляется элемент, например в ключе 12 появляется запись 12:30, то нужно заполнить пустые ячейки с шагом 00:30 вверх и вниз.
Как такое возможно реализовать?
P.S. Так же возможна ситуация, что массив содержит два или три значения, и нужно заполнить ячейки между ними.
  • Вопрос задан
  • 759 просмотров
Пригласить эксперта
Ответы на вопрос 3
@SharuPoNemnogu
не язык плохой, программисты такие...
если на коленке
$arr = [
            8 => '',
            9 => '',
            10 => '',
            11 => '',
            12 => '12:30',
            13 => '',
            14 => '',
            15 => '',
            16 => '',
            17 => '',
            18 => '',
            19 => '',
            20 => '',
            21 => '',
            22 => '',
        ];

        $values = array_flip(array_filter($arr));
        $key = array_pop($values);

        $dt = \DateTime::createFromFormat('H:i', $arr[$key]);

        foreach ($arr as $k => $v) {
            if (empty($v)) {
                $v = clone $dt;
                if ($k < $key) {
                    $v->sub(new \DateInterval('PT' . (($key-$k) * 30) . 'M'));
                } else {
                    $v->add(new \DateInterval('PT' . (($k-$key) * 30) . 'M'));
                }
                $arr[$k] = $v->format('H:i');
            }
        }


P.S. Так же возможна ситуация, что массив содержит два или три значения, и нужно заполнить ячейки между ними.

если интервал такой же в 30 мин, то прокатит
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
В ассоциативном массиве нет никаких "ячеек". Приведите пример массивов в виде было/стало, по вашему описанию непонятно что вы хотите сделать.
Ответ написан
Комментировать
@BorisKorobkov Куратор тега PHP
Web developer
например в ключе 12 появляется запись 12:30, то нужно заполнить пустые ячейки с шагом 00:30 вверх и вниз.

$i = 12;
$array[$i-1] = ...;
$array[$i+1] = ...;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы