我目前正在审核代码库,以转移到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()语句中使用百分号是否有所改变?还是我在这里想念什么?这只是一个警告语句,但我宁愿使错误日志中没有任何可能占用空间的内容。
答案 0 :(得分:2)
您正在检查if语句中的整数,这导致我们假设不需要使用您格式的%
符号。
虽然不禁止在格式字符串中包含诸如%
之类的文字,但是它没有任何语义值,但它被视为普通百分号。这意味着您的format()
的结果例如是'%19'
,它是一个非数字字符串,不能与整数进行比较。您的if语句将始终失败。
如果期望的结果是'19'
(一个数字字符串),则只需从格式字符串中删除%
。
$dto = new \DateTime('now');
if($dto->format("y") == 20) {