генерировать массив из php цикла while - PullRequest
2 голосов
/ 02 февраля 2012

Я хочу запустить цикл while (или любой другой) для вывода небольшого списка дат в виде массива

$start = $day = strtotime("-1 day");
$end = strtotime('+6 day');
while($day < $end)
{
    echo  date('d-M-Y', $day) .'<br />';
    $day = strtotime("+1 day", $day) ;
}

Это прекрасно работает для печати, но я хочу сохранить его в виде массива (и вставить его в базу данных mysql). Да! Я не знаю, что я делаю.

Ответы [ 3 ]

8 голосов
/ 02 февраля 2012

, чтобы создать массив, вам нужно сначала инициализировать его вне цикла (из-за переменной области видимости)

<code>$start = $day = strtotime("-1 day");
$end = strtotime('+6 day');
$dates = array(); //added
while($day < $end)
{
    $dates[] = date('d-M-Y', $day); // modified
    $day = strtotime("+1 day", $day) ;
}
echo "<pre>";
var_dump($dates);
echo "
";

затем вы можете использовать свои даты, используя либо foreach или while

подход foreach:

foreach($dates as $date){
     echo $date."<br>";
}

при заходе на посадку:

$max =  count($dates);
$i = 0;
while($i < $max){
    echo $dates[$i]."<br>";
}
3 голосов
/ 02 февраля 2012
$arr = Array();
while(...) {
   $arr[] = "next element";
   ...
}

[] добавляет новый элемент в массив, как и push(), но без дополнительных затрат на вызов функции.

1 голос
/ 02 февраля 2012

Простой способ это просто:

$start = $day = strtotime("-1 day");
$end = strtotime('+6 day');
$arr = array();
while($day < $end)
{
    $arr[] = date('d-M-Y', $day);
    $day = strtotime("+1 day", $day) ;
}

// Do stuff with $arr

$arr[] = $var - это синтаксис для добавления к массиву в PHP. Массивы в php не имеют фиксированного размера и поэтому могут быть легко добавлены.

...