Передача переменной в функцию strtotime () в PHP - PullRequest
5 голосов
/ 14 декабря 2011

Аналогично этому вопросу , но на мой конкретный вопрос не было ответа.

Текущая дата 2011-12-14, для справки, если этот вопрос будет рассмотрен в будущем.

Я пробовал это:

$maxAge = $row['maxAge']; // for example, $row['maxAge'] == 30
$cutoff = date('Y-m-d', strtotime('-$maxAge days'));

И возвращает следующее значение для $cutoff: 1969-12-31

И я попробовал это:

$maxAge = $row['maxAge']; // for example, $row['maxAge'] == 30
$cutoff = date('Y-m-d', strtotime('-' . $maxAge . ' days'));

И возвращает следующее значение для $cutoff: 2011-03-14

Как я могу успешно передать эту переменную в функцию strtotime(), чтобы она вычисляла количество дней для правильного вычитания?

Например, если $maxAge == 30 и текущая дата 2011-12-14, тогда $cutoff должно быть 2011-11-14

Ответы [ 3 ]

16 голосов
/ 14 декабря 2011

Используйте двойные кавычки:

date('Y-m-d', strtotime("-$maxAge days"));
4 голосов
/ 14 декабря 2011

Используйте двойные кавычки:

$cutoff = date('Y-m-d', strtotime("-$maxAge days"));

Однако, если вы делаете такие простые вычисления, как этот, вы можете просто написать свой код, не используя strtotime, например:

$date = getdate();
$cutoff = date('Y-m-d', mktime( 0, 0, 0, $date['mon'], $date['mday'] - $maxAge, $date['year']));
echo $cutoff;
1 голос
/ 14 декабря 2011

Вы можете использовать либо двойные кавычки, либо строку heredoc в PHP для расширенных переменных. Строки в одинарных кавычках и nowdoc не раскрывают переменные.

http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing

...