Цикл Foreach против объекта DateTime

Я пишу небольшую программу, которая в основном добавляет плату за книгу, если она просрочена, как библиотека.

Так что я думаю, что за каждый день, когда книга опаздывает, будет добавлена ​​плата

Т.е.: если книга просрочена на 5 дней, то плата составит £ 10 = £ 2 в день.

Вот мой код до сих пор, не уверен, будет ли это «foreach», если честно, но я думаю, так

<?php
class Book
{

public $timeOverdue;

public function isBookOverdue()
{
$returnedDate = new \DateTime('05/19/2015');
$dueDate = new DateTime('05/08/2015');

var_dump('returndDate', $returnedDate);
var_dump('dueDate', $dueDate);

if ($returnedDate > $dueDate) {

echo 'Book is overdue.' . PHP_EOL;
// $isBookOverdueStatus = true;
$timeOverdue = date_diff( $returnedDate, $dueDate);
echo $timeOverdue->format("%m month, %d days (total: %a days)") . PHP_EOL;
var_dump($timeOverdue);

} else {
echo "Book is not overdue" .PHP_EOL. "Book has been returned" . PHP_EOL;
die();
}
}
}

$returnOfABook = new Book();
$returnOfABook->isBookOverdue();
$returnOfABook->addOverdueFee();

Тогда вот то, что я думаю, возможно? больше кода sudo чем что-либо:

// public function addOverdueFee($timeOverdue)
// {
//   foreach ($timeOverdue as "day" => 1) {
//       // add fee
//   }
// }

и просто для справки вот объект даты, на котором я хочу, чтобы цикл работал:

object(DateInterval)#4 (15) {
["y"]=>
int(0)
["m"]=>
int(0)
["d"]=>
int(11)
["h"]=>
int(0)
["i"]=>
int(0)
["s"]=>
int(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
int(0)
["first_last_day_of"]=>
int(0)
["invert"]=>
int(1)
["days"]=>
int(11)
["special_type"]=>
int(0)
["special_amount"]=>
int(0)
["have_weekday_relative"]=>
int(0)
["have_special_relative"]=>
int(0)
}

Так что я думаю, что это будет что-то вроде этого?

foreach($array as $key => $value)
{
//do stuff
}

Я все еще многому учусь, поэтому любые советы, предложения будут отличными, Спасибо!

0

Решение

Просто получите количество дней, в течение которых книга просрочена, и умножьте ее на 2. У вас уже есть все, что вам нужно, как timeOverdue содержит количество дней, в течение которых книга просрочена.

if ($returnedDate > $dueDate) {
$timeOverdue = date_diff( $returnedDate, $dueDate);
$amountToPay = $timeOverdue->days * 2;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]