DateTime-> Format函数意外地带有%符号

时间:2019-01-24 21:20:50

标签: php datetime

我目前正在审核代码库,以转移到PHP 7安装。我们所看到的问题之一是DateTime-> format(),其中参数字符串以带百分号的形式传入,该百分号前包含一个值,在这种情况下,任何比较运算符都将其视为字符串,而不是数字值

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

PHP警告:在第225行的/var/www/html/application/models/User.php中遇到的非数字值

PHP 5和7之间在format()语句中使用百分号是否有所改变?还是我在这里想念什么?这只是一个警告语句,但我宁愿使错误日志中没有任何可能占用空间的内容。

1 个答案:

答案 0 :(得分:2)

您正在检查if语句中的整数,这导致我们假设不需要使用您格式的%符号。
虽然不禁止在格式字符串中包含诸如%之类的文字,但是它没有任何语义值,但它被视为普通百分号。这意味着您的format()的结果例如是'%19',它是一个非数字字符串,不能与整数进行比较。您的if语句将始终失败。

如果期望的结果是'19'(一个数字字符串),则只需从格式字符串中删除%

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