类型 null 的减量没有效果,这将在下一个主要版本中改变

问题描述 投票:0回答:1

如何编辑源代码?我已经使用这个来源 20 年了。

function dayOfWeek ($day, $month, $year)
{
    if ($month < 3) {
        $month += 10;
        $year--;  // **24 line**
    }
    else {
        $month -= 2;
    }

警告:类型 null 的减量没有效果,这将在 PHP 的下一个主要版本位于 /home/gagebu/www/calendar.php 第 24 行

php php-8.3
1个回答
1
投票

PHP 长期以来一直在努力清理其固有的弱类型造成的一些混乱,这也不例外。这是根据 this RFC 进行更改的,其中指出尝试递增与递减时会发生意外情况

null

$x = $y = null;
$x++;
var_dump($x); // 1
$y--;
var_dump($y); // NULL

这是不一致的行为。相反,PHP 希望您将来传递一些数字。

要修复您的代码,只需添加对

null
的检查。我已经添加了当前年份,但您可以添加自己的默认值

function dayOfWeek ($day, $month, $year)
{
    if($year === null) $year = date('Y');
    if ($month < 3) {
        $month += 10;
        $year--;  // **24 line**
    }
    else {
        $month -= 2;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.