генерировать массив из php while loop

Я хочу запустить цикл 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 не имеют фиксированного размера и поэтому могут быть легко добавлены.