型が配列でない変数でforeachを実行しようとするとタイトルのエラーが出てしまいます。 foreach文が使えるのは配列かオブジェクトの時だけだから当然、エラーも出るだろうということで
foreach ($arr as $item){ 処理 }
を下のコードのように
foreach ((array)$arr as $item){ 処理 }
というように強制的に配列に変換してやるという技です。シンプルでnullチェックとかしなくていいという方法です。 ただ、後々、自分で修正加えるときとか逆に面倒なことになりそうなのできちんと対処したほうがいいのかなと思いましたが、とりあえず動いてくれ−ってときには良いと思います。