В этом случае $interval, который я указываю как целое число, означает, что он работает нормально, возвращая истину, предположим, что $interval, который я указываю как строку, означает, что он не работает должным образом, возвращая ложь.
scenario 1
<?php
$restDate = "2018-11-21 11:58:55";
$difference = strtotime(date('Y-m-d H:i:s')) - strtotime($restDate);
$interval = 60 * 60 * 24 * 7;
if ($difference <= $interval){
$data['passwordResetStatus'] = true;
}else{
$data['passwordResetStatus'] = false;
}
var_dump($data);
?>
Output
array(1) { ["passwordResetStatus"]=> bool(true) }
scenario 2
<?php
$restDate = "2018-11-21 11:58:55";
$difference = strtotime(date('Y-m-d H:i:s')) - strtotime($restDate);
$interval = "60 * 60 * 24 * 7"; // changes from here
if ($difference <= $interval){
$data['passwordResetStatus'] = true;
}else{
$data['passwordResetStatus'] = false;
}
var_dump($data);
?>
Output
array(1) { ["passwordResetStatus"]=> bool(false) }
My expected out
сценарий 2 также должен возвращаться как array(1) { ["passwordResetStatus"]=> bool(true) }






Очевидно, вы не можете поместить математические уравнения в строку, но если по какой-то причине вы получили их в строковом формате, и вы уверены, что они всегда будут в таком формате, вы можете его проанализировать ..
например:
$interval = array_product(explode('*',"60 * 60 * 24 * 7"));
Вместо того, чтобы вводить «60 * 60 * 24 * 7», пользователь не может ввести «1 неделя»?
Если да, то гораздо более безопасный способ, чем eval, - использовать strtotime для вычисления времени.
echo strtotime("1 week")-time();
// Same as 60*60*24*7
Возможно больше это
Почему бы не работать с классами PHP DateTime? Вот краткое решение.
$today = new \DateTime();
$rest = new \DateTime('2018-11-21 11:58:55');
$interval = $rest->diff($today);
$passwordValid = $interval->format('%a') >= 7 ? false : true;
Что я здесь натворил? Сначала нам нужно сегодняшнее время. После этого нам понадобится время, с которым мы сравниваем сегодняшнее время. Оба раза являются экземплярами DateTime. Благодаря этому мы можем довольно легко вычислить разницу между обоими временами. Класс DateTime получил метод diff, который вычисляет разницу между двумя объектами DateTime. Он возвращает объект DateInterval, в котором содержится разница. Теперь мы можем сравнить рассчитанную разницу с вашим интервалом в 7 дней.
Довольно просто, а?
Это гораздо более интуитивно понятно для пользователя, будет полезна ссылка на возможные значения.