1. ホーム
  2. php

[解決済み】メッセージ。Trying to access array offset on value of type null [重複]配列のオフセットにアクセスしようとしています。

2022-02-16 13:09:55

質問

数年前から使っているスクリプト(invoiceplane)で、何度もこのエラーが発生するのですが、残念ながら制作者によってメンテナンスされていないようです。

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 btwですが、githubのリポジトリからファイルを上書きしただけではエラーは直りませんでした。

解決するには?

このようなことが起こるのは {コード はヌルではなく、インデックス $cOTLdata

'char_data'

isset($cOTLdata['char_data'])

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

三項演算子のthenとelseを入れ替えたのは、=== nullはissetがすでにやっていること(ただし正の場合)と本質的に同じだからです。