Я хочу запустить цикл while (или any) для вывода небольшого списка дат в виде массива
$start = $day = strtotime("-1 day"); $end = strtotime('+6 day'); while($day < $end) { echo date('dM-Y', $day) .'<br />'; $day = strtotime("+1 day", $day) ; }
Это отлично подходит для печати, но я хочу сохранить его как массив (и вставить его в mysql db). Да! Я не знаю, что делаю.
для создания массива вам необходимо сначала инициализировать его за пределами вашего цикла (из-за изменения переменной области)
$start = $day = strtotime("-1 day"); $end = strtotime('+6 day'); $dates = array(); //added while($day < $end) { $dates[] = date('dM-Y', $day); // modified $day = strtotime("+1 day", $day) ; } echo "<pre>"; var_dump($dates); echo "</pre>";
вы можете использовать свои даты, используя либо foreach
либо
подход foreach:
foreach($dates as $date){ echo $date."<br>"; }
в то время как подход:
$max = count($dates); $i = 0; while($i < $max){ echo $dates[$i]."<br>"; }
$arr = Array(); while(...) { $arr[] = "next element"; ... }
[]
Добавляет новый элемент в массив, как push()
но без накладных расходов на вызов функции.
Простой способ:
$start = $day = strtotime("-1 day"); $end = strtotime('+6 day'); $arr = array(); while($day < $end) { $arr[] = date('dM-Y', $day); $day = strtotime("+1 day", $day) ; } // Do stuff with $arr
$arr[] = $var
является синтаксисом добавления массива в PHP. Массивы в php не имеют фиксированного размера и поэтому могут быть легко добавлены.