答えだけ言うと単に型キャストですが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