PHPでforeachを回そうとするとWarning: Invalid argument supplied for foreach()というエラーが出ることがあります。
原因
このWarning: Invalid argument supplied for foreach()のワーニングはforeachで回そうとしている変数が配列でないために出るエラーです。
PHPのマニュアルには下記のように記載されています。
対応方法
このワーニングを回避する方法としては、foreachで回す変数が配列であるかチェックする方法とforeachで回す変数を配列にキャストする方法があります。
foreachで回す変数が配列かどうかチェックしてからfoeachを回す。
foreachで回す前に前もって配列かどうかチェックしているので、配列でない変数をforeachで回すことがないためワーニングを回避することが出来ます。
foreachで回す変数を配列にキャストする方法
キャストとは、変数や値の頭にキャスト演算子をつけることで、指定された型に強制的に変換するもののことを言います。
このキャストは、foreachでWarning: Invalid argument supplied for foreach()のワーニングを回避するのに有効です。
$arrayがnull等の値であっても配列に$arrayの値をキャスト(配列に型変換)しているためワーニングを回避することが出来ます。
僕自身も結構foreachではこのwarningを出してしまうことがあります。
そんな時は、foreachで回す時に回す変数をarrayにキャストしています。