消息:尝试访问 null 类型值上的数组偏移量

2022-08-30 08:09:55

我在一个脚本(发票平面)中多次收到此错误,我已经使用了几年,但不幸的是,它的创建者没有维护它:

Message: Trying to access array offset on value of type null

我的服务器已经升级到PHP 7.4,我正在寻找一种方法来解决问题并自己维护脚本,因为我对它非常满意。

这是给出错误的行:

$len = $cOTLdata['char_data'] === null ? 0 : count($cOTLdata['char_data']);

$cOTLdata传递给函数:

public function trimOTLdata(&$cOTLdata, $Left = true, $Right = true)
{
    $len = $cOTLdata['char_data'] === null ? 0 : count($cOTLdata['char_data']);
    $nLeft = 0;
    $nRight = 0;
    //etc

顺便说一句,它包含在mpdf中,但简单地覆盖github存储库中的文件并不能修复错误。


答案 1

发生这种情况是因为 不为 null,但索引不存在。以前版本的PHP可能对此类错误不那么严格,并默默地吞下了错误/通知,而7.4不再这样做。$cOTLdata'char_data'

要检查索引是否存在,可以使用 isset()

isset($cOTLdata['char_data'])

这意味着该行应如下所示:

$len = isset($cOTLdata['char_data']) ? count($cOTLdata['char_data']) : 0;

注意 我切换了三元运算符的 then 和 else 情况,因为 === null 本质上是 isset 已经执行的操作(但在正数情况下)。


答案 2

推荐