Есть два массива в одном начальные даты бронирования в другом конечные. ["2021-03-29","2021-04-1"] ["2021-03-31","2021-04-2"] Нужно получить массив вот такого вида: ["2021-03-29","2021-03-30","2021-03-31","2021-04-1","2021-04-2"] PHP: <?php $query=mysqli_query($con,"SELECT * from reserve where id_room='$id_room'"); while ($row=mysqli_fetch_array($query)) { $mass[] = $row['datearrive']; $mass1[] = $row['dateleave']; } ?>
Работай с датами как unix timestamp или как с объектами DateTime, тогда всё будет просто и безошибочно. "2021-03-29" это не дата, а вариант текстового представления даты. Попробуй например так PHP: <?php $d1 = strtotime('2021-03-29'); $d2 = strtotime('2021-04-01'); for ($d = $d1; $d <= $d2; $d = strtotime('+1 day', $d)) { echo date("Y-m-d\n", $d); // вместо этого может быть запись в БД } проверка в текстовой консоли Код (Text): $ php test.php 2021-03-29 2021-03-30 2021-03-31 2021-04-01 --- Добавлено --- для DateTime (или Carbon\Carbon) нагугли пример сам. --- Добавлено --- Но возможно, что ты зря хочешь "получить массив". Вычисления/сравнения полей типа DATE или DATETIME должны происходить на сервере БД, а не в PHP. типа ...WHERE x BETWEEN date1 AND date2 Можешь рассказать об исходной задаче, а не о том, как ты предполагаешь её решать?
Нужно сделать недоступными забронированные дни. Массив дат заношу в Json чтобы заблокировать с помощью скрипта ниже. Проблема в том, что не получается заблокировать промежуточные дни Код (Javascript): <script> var array =JSON.parse('<?=json_encode($mass) ?>'); $('input').datepicker({ beforeShowDay: function(date){ var string = jQuery.datepicker.formatDate('yy-mm-dd', date); return [ array.indexOf(string) == -1 ] } }); </script>