リスティング広告代行の専門会社|Yahoo!プロモーション広告・Google AdWords完全対応|東京・大阪・名古屋

PHPのforeach文でnullチェックなしでエラー回避


今回から、ソフト開発に関係する情報もこちらのコラムに投稿していこうと思います。

専門的な話になりますが、幅広いジャンルの有益な情報を発信していきたいと思いますので、少しでもご興味のある方にお届けできれば幸いです。

PHPのforeach文でよくあるミス

PHPでよくある潜在バグに、foreach文のnullチェック漏れがあります。

Warning: Invalid argument supplied for foreach() ...

foreach文でこんなエラーが出たことありますよね。これは、foreach文に与えた配列が空(null)だった時や、型が配列でなかった時に発生するエラーです。(多くの場合は前者です)

これを回避するために、普通は

if (is_array($array)) {
  foreach ($array as $elem) {
    // hogehoge.
  }
}

こんなふうにnullチェックを入れますが、実はもっと簡単でスマートな方法があります。それがこれ。

foreach ((array)$array as $elem) {
  // hogehoge.
}

(array)$arrayで強制的に配列にキャストしてしまうわけです。このコードでは、$arrayがnullの場合は要素が0個の配列にキャストされ、$arrayが配列でない型の場合は要素が1個の配列(元の$arrayを唯一の要素に持つ配列)にキャストされます。

つまり、確実に配列型に変換されるため、nullチェックの必要がなくなるわけです。

ちょっとした小技ですが、コードがシンプルに保てるのでお勧めです。



業界初のリスティング広告運用総合支援ツール Lisket(リスケット)

Facebookもチェック