便利なphp foreach のオプション? 8

答えだけ言うと単に型キャストですがw

foreachをまわす時

引数が配列じゃないとこんなメッセージが

Warning: Invalid argument supplied for foreach() in ******** on line 10

がでるかと思うんですが、これを出さないための対応方法。

今までこんな感じに処理してました。

if(is_array($def)){
foreach( $def as $k=>$v){
print $v;
}
}

が、実はこんな foreach の書き方がありました。。

foreach( (array) $def as $k=>$v){
print $v;
}

なるほど。。こういう型キャストの使い方があったのか。。

動作の説明

(array)$def

で $def を array に変換してるんですね。(ちなみにこれを type casting といいます。)
なので foreach のエラー(これは array じゃねーよ!)というエラーがでなくなると。

これでソースが2行も減りました。

ちなみに、 array だけじゃなく object や int もあります。
型の相互変換

でもさすがにこれはひどいな。。

$binary = b”binary string”;

最後

こんな芸当が可能に。

var_dump((object)(int)(string)true);
//string(1) “1” が表示

必殺 チェインタイプキャスティングw


->