6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

phpでTrying to access array offset on value of type null エラーと軽めの対処法

Last updated at Posted at 2021-05-11

dev環境では起きず、手元のローカル環境でのみ起きていた事象。
phpのバージョンにより発生するもので、mampでphp7.3環境では起きず、7.4では発生しておりました。
エラー名で原因はすぐ見つかりましたが、直し方どうするかな〜とちょっと迷いました。

###◼️原因
特定の変数のデータを取得しようとした際に、
その変数の中身が入っていないにもかかわらずデータをとろうとすると、
7.3以前では nullを返し、
7.4以降では タイトルのエラーが出てしまう状態でした。

//発生の例

$test; //test変数を作成

if($test["hoge"] == "huge"){ //そもそも$testには何も入れていない状態
 echo $test["hoge"];
}

この場合、タイトルのエラー

◼️Trying to access array offset on value of type null

が画面に表示します。

この場合、まずは$testにデータが存在しているかを判定すると良いです。


$test; //test変数を作成

if(isset($test)){ //ここでまず$testにデータが入っているかを判定
 if($test["hoge"] == "huge"){ //そもそも$testには何も入れていない状態。なので
  echo $test["hoge"]; //ここは通りません。
 }
}

ただ、これだとちょっとネストで読みづらいので下記の方法の方がわかりやすいです。

//例

$test; //test変数を作成

if(isset($test) && $test["hoge"] == "huge"){ 
  echo $test["hoge"]; 
}

phpの&&の複数条件式は左側から評価をし、falseとなった時点でその式を抜けます。
この例なら「isset($test)」の時点でfalseなので、次へ進むということになります。

6
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?