フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【PHPエラー】Warning: Invalid argument supplied for foreach()の解決方法

PHP
Warning
エラー
プログラミング

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

PHPはウェブ開発の中心的な言語の一つとして多くのデベロッパーに使われています。しかし、実際の開発作業中にさまざまなエラーに直面することは避けられません。特に、foreachループを利用している際に「Warning: Invalid argument supplied for foreach()」というエラーが出ることがあります。このエラーに直面したことがある方も多いのではないでしょうか?今回の記事では、この具体的なエラーメッセージの原因と、それを解決するための方法について詳しく解説していきます。

早速ですがPHPでforeach文を使っている際、以下のようなエラー文が表示されました。

Warning: Invalid argument supplied for foreach()

今回はこのエラーが表示された際の解決方法を解説します。

Warning: Invalid argument supplied for foreach()

エラーが表示される理由

foreach文は配列の要素がある回数だけ順番にデータを取り出す処理です。このエラーが表示されるのは、空の配列データをforeach文で取り出そうとした場合に表示されるものです。
簡単にいうと「空の配列だから何も取り出せないよ」というエラーになります。

対処方法

配列が空かどうかを判別し、中身が空ではない時だけforeachするようにすればこのエラーは表示されなくなります。

エラーが表示される記述例

foreach($arr as $row){
  //処理内容
}

正しい記述例1

foreach((array)$arr as $row){
  //処理内容
}

正しい記述例2

if(is_array($arr)){
  foreach($arr as $row){
    //処理内容
  }
}

他にも書き方はいくつかありますがこれらの書き方を覚えておけば大丈夫です。

まとめ

今回の記事では「Warning: Invalid argument supplied for foreach()」というエラーについて解説しました。PHPでの開発を進めていく中で、「Warning: Invalid argument supplied for foreach()」は、初めて見るエラーで惑いました。このエラーが発生する主な原因は、foreachループに渡される引数が配列またはオブジェクトでない場合です。この記事を書くことで、私自身の理解も深まりましたし、同じエラーに直面した方々にも少しでも参考になればと思います。