Я хочу отображать даты между двумя датами в цикле foreach. Предположим, что дата начинается 1 мая 2014 года и заканчивается 3 мая 2014 года. Я хочу показать это
//С помощью только для цикла отобразится то, что я хотел
for($i=$dateFrom;$i<=$dateTo;$i++) {
echo $i."<br>";
}
May 1,2014
May 2, 2014
May 3, 2014
Но этот код возвращается при использовании цикла foreach для отображения его шаблона
May 3,2014
May 3, 2014
May 3, 2014
Это мой код в action.php
$dateTo = $r->getParameter("date_to", date('Y-m-d'));
$dateFrom = $r->getParameter("date_from", date('Y-m-d', strtotime('7 days ago', strtotime($dateTo))));
$this->data=array();
foreach($this->deposits as $d) {
$obj = new stdClass();
$obj->created_by = $d->created_by;
$obj->date_created = $d->date_created;
for($i =$dateFrom;$i <= $dateTo;$i++) {
$date=$i;//I think the problem is here.I am not sure how to make this work
}
$obj->amount = $d->amount;
$obj->dateCovered = $date;
$this->data[] = $obj;
}
template.php
<?php foreach ($data as $i => $d): ?>
<tr class="<?php echo ($i%2==0)?'even':'odd' ?>">
<td><?php echo $d->id ?></td>
<td>
<?php echo $d->dateCovered ?>//this will display the last date only
</td>
<td>
<?php $amountTotal += $d->amount ?>
PHP <?php echo number_format($d->amount, 2) ?>
</td>
<td><?php echo $d->created_by ?></td>
<td><?php echo date("F d, Y",strtotime($d->date_created)) ?></td>
</tr>
<?php endforeach ?>
Моя проблема здесь в том, что она не отображает все даты между двумя датами. Вместо этого будет отображаться только последняя дата между двумя датами. Что не так с этим кодом?
вы можете это сделать
$date_from = strtotime("1 May 2015");
$date_to = strtotime("15 May 2015");
$oneDay = 60*60*24;
for($i=$date_from; $i<=$date_to; $i=$i+$oneDay)
{
echo date("F j, Y", $i) . "<br>";
}
Теперь вы можете попробовать с этим..
$dateTo = $r->getParameter("date_to", date('Y-m-d'));
$dateFrom = $r->getParameter("date_from", date('Y-m-d', strtotime('7 days ago', strtotime($dateTo))));
$oneDay = 60*60*24;
$date_time = strtotime($dateFrom);
$this->data=array();
foreach($this->deposits as $d) {
$obj = new stdClass();
$obj->created_by = $d->created_by;
$obj->date_created = $d->date_created;
$date= date("F j, Y", $date_time);
$date_time += $oneDay;
$obj->amount = $d->amount;
$obj->dateCovered = $date;
$this->data[] = $obj;
}
<?php
$date_from = strtotime("10 September 2000");
$date_to = strtotime("15 September 2000");
$day_passed = ($date_to - $date_from); //seconds
$day_passed = ($day_passed/86400); //days
$counter = 1;
$day_to_display = $date_from;
while($counter < $day_passed){
$day_to_display += 86400;
echo date("F j, Y \n", $day_to_display);
$counter++;
}
?>