AlexProg
Всем добра!
Есть график Chart.js, с БД берутся данные.
График на месяц, т.е. 30 значений.
Если данных в БД нет — то ставится ноль.Но на графике не должно быть нулевых значений. Там где ноль нужно взять значение следующего дня.
Вопрос: Как?Спасибо!
ADSoft
тогда это не график по дням… это нечто другое
это вы хотите график по тем дням — когда было больше 0 чего-то, так и делайте выборку
AlexProg
Как удобно называйте
Выборка берет с БД, допустим 5 дней из 30 есть данные.
25 дней нули.НО! такого же не может быть!? Курс то не стал в ноль, он был на прежнем месте.
Т.е. где ноль нужно вставить курс предыдущего дня.
Drunkenmunky
А если выборка начинается с 0?
AlexProg
В БД нет нулей.
В выборке из БД только значения.
Drunkenmunky
OK Перефразирую.
На вашем графике интервал с 4 мая по 3 июня.
Означает ли это, что график всегда начинается с даты с ненулевым значением чего-то там?
MouseZver
в js оформи фильтр на нулевое значение дней
если 30 числа — значение = 0 ? откуда ему знать что дальше ?
AlexProg
Нет. Нулей не должно быть нигде.
— Добавлено —Как, подскажите пожалуйста?
Drunkenmunky
Сдаюсь
AlexProg
Куда копать?
MouseZver
сколько ?
Drunkenmunky
Извлечь выборку не за 30 дней, а включая последнюю запись за предыдущий интервал.
Извлеченное поместить в массив $arr1 с датами в ключах.
Проверить дату начала графика в $arr1 — если есть, то копировать в новый массив, если нет, то получить предыдущую запись.
Далее в цикле заполнять новый массив предыдущими записями в нем, если в $arr1 нет такой записи.
AlexProg
1 кофе
brevis
Напишу еще тут на всякий случай
Код (PHP):
function removeZeros($data) { $zero_idx = []; $last_non_zero = 0; foreach($data as $k => $v) { if ($v == 0) $zero_idx[] = $k; else $last_non_zero = $v; foreach ($zero_idx as $i) $data[$i] = $last_non_zero; $zero_idx = []; } } return $data; }https://i.imgur.com/cm3xQt5.png
ADSoft
Чё так сложно? Array_filter и все
а по хорошему, надо просто выбору нормально сделать, с доп условием на нулевые значения
Drunkenmunky
Ему кривая нужна, а не кардиограмма. Включая пропущенные даты.
AlexProg
Всем спасибо! Проблема решена
ADSoft
Тогда уж не предыдущее или последнее брать а их среднеарифметическое, для большей плавности ))
Drunkenmunky
Судя по графику, это курс валют.
Оно не так устанавливается.
Если официальный «на сегодня» не установлен, то, обычно, ставят вчерашний. А там уже по месту ориентируются. Если есть какой-то ажиотаж местный, локально курс может весьма сильно измениться.