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

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

我的服务器已经升级到PHP7.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 btw中,但仅仅覆盖github存储库中的文件并不能修复错误.

推荐答案

之所以会发生这种情况,是因为$cOTLdata不是NULL,但是索引'char_data'不存在.PHP以前的版本可能对这类错误不那么严格,会默默地接受错误/通知,而7.4则不再这样做.

要判断索引是否存在,可以使用isset():

isset($cOTLdata['char_data'])

这意味着线条应该是这样的:

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

注意,我切换了三元运算符的then和else情况,因为===null本质上是isset已经做的事情(但在正的情况下).

Php相关问答推荐

如何发送woocommerce订单跟踪码与短信

使用WooCommerce本机产品短码时不考虑价格筛选(_SHORT CODE)

PHP-转义字符串内的双反斜杠

Laravel数据表在一个视图中传递两个实例

基于不用于变体的产品属性隐藏多个WooCommerce发货方式

获取并判断WooCommerce用户订阅结束日期

在PHP中,如何将介于0和1之间(包括0和1)的浮点概率转换为数组索引?

Chillerlan/php-iOS名称字段的QR vCard错误

在WooCommerce中添加特定产品类型的百分比费用和固定费用

如何使用barryvdh/laravel-Snappy在两个打印页面上将表格分成两部分?

重命名 WordPress 中现有的自定义分类法名称和标签

显示 woocommerce 中所选变体的属性术语描述

无法在 WordPress 上获取 JSON 数据

在 Heroku 上部署 Sylius - 路由不正确

致命错误:未捕获 Google_Exception:客户端机密 JSON 文件无效.在 /somepath/lib/vendor/google/apiclient/src/Google/Client.php

如何通过帖子自定义元数据进行查询

Eloquent 的模型更新了它应该 laravel php 的更多行

复杂的mysql查询问题

如何简化 php API 中的格式化数组列表数据以提供 React Native 部分列表

通过php在xml文件中添加 node