DateTime-> Форматировать функции неожиданно с символом% - PullRequest
0 голосов
/ 25 января 2019

В настоящее время я проверяю кодовую базу для переноса в установку PHP 7. Одна из проблем, с которыми мы сталкиваемся, связана с DateTime-> format (), где строка аргумента передается со знаком процента, исключающим значение, и в этом случае любой оператор сравнения обрабатывает его как строку, а не как числовое значение.

$dto = new \DateTime('now');
if($dto->format("%y") == 20) {

Предупреждение PHP: нечисловое значение, встречающееся в /var/www/html/application/models/User.php в строке 225

Произошло ли изменение между PHP 5 и 7 в отношении использования операторов Percent sign в формате ()? Или я что-то здесь упускаю? Это всего лишь предупреждение, но я бы лучше сохранил в журнале ошибок все, что могло бы занять место.

1 Ответ

0 голосов
/ 25 января 2019

Вы проверяете целое число в ваших утверждениях if, что приводит нас к предположению, что знак % в вашем формате не требуется.
Хотя не запрещено включать литералы, такие как %, в строку формата, они не имеют никакого семантического значения, они просто обрабатываются как обычный символ процента. Это означает, что результатом вашего format() будет, например, '%19', который не является числовой строкой и не может быть сравнен с целым числом. Ваше заявление if всегда будет неудачным.

Если ожидаемый результат был '19', числовая строка, то вы можете просто удалить % из строки формата.

$dto = new \DateTime('now');
if($dto->format("y") == 20) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...