Warning: Invalid argument supplied for foreach()…エラーの原因と対応方法

シェアする

PHPでforeachを回そうとするとWarning: Invalid argument supplied for foreach()というエラーが出ることがあります。

原因

このWarning: Invalid argument supplied for foreach()のワーニングはforeachで回そうとしている変数が配列でないために出るエラーです。

PHPのマニュアルには下記のように記載されています。

foreach が使えるのは配列とオブジェクトだけであり、 別のデータ型や初期化前の変数に対して使うとエラーになります。PHPマニュアル

対応方法

このワーニングを回避する方法としては、foreachで回す変数が配列であるかチェックする方法とforeachで回す変数を配列にキャストする方法があります。

foreachで回す変数が配列かどうかチェックしてからfoeachを回す。

foreachで回す前に前もって配列かどうかチェックしているので、配列でない変数をforeachで回すことがないためワーニングを回避することが出来ます。

foreachで回す変数を配列にキャストする方法

キャストとは、変数や値の頭にキャスト演算子をつけることで、指定された型に強制的に変換するもののことを言います。

このキャストは、foreachでWarning: Invalid argument supplied for foreach()のワーニングを回避するのに有効です。

$arrayがnull等の値であっても配列に$arrayの値をキャスト(配列に型変換)しているためワーニングを回避することが出来ます。

僕自身も結構foreachではこのwarningを出してしまうことがあります。
そんな時は、foreachで回す時に回す変数をarrayにキャストしています。

シェアする

フォローする