PHPのforeachで配列チェックを省略する方法

こんにちは!ぐちです。

foreach

PHPにおいてforeach文でループすることはよくあると思いますがパラメータに渡したのが配列でなかった場合にはWarningが出力されてしまいます。

$obj_list = null;

foreach ($obj_list as $obj) {

}

上記の例ではWarningが出力されてしまいます。ここまであからさまな処理はないと思いますが意図しない値がくるときを想定すると配列かどうかのチェックを入れますよね?

$obj_list = null;

if(is_array($obj_list)) {
    foreach ($obj_list as $obj) {

    }
}

いたって一般的なコードですが無駄に行数が増えてしまうのも考えものかなと。そこで配列かどうかのチェックを省く方法が下記になります。

キャスト

配列としてキャストすることで要素がゼロの配列となりWarningが出力されることなくループにも入らないのでチェックを省略することが可能となります。

$obj_list = null;

foreach ((array)$obj_list as $obj) {

}

どうですか?かなりスッキリしたコードになりますよね。ちょっとした小技ですがコードの可読性を維持したまま安全な処理を行うことができるようになります。

では今回はこの辺で。