foreach文で変数が配列でない場合は、
<?php // エラーになる場合 header('Content-Type: text/html; charset=UTF-8'); mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_http_input("UTF-8"); mb_http_output('UTF-8'); $temp = "test"; // $tempは配列ではない foreach($temp as $key => $val){ echo "Key = $key, Val = $val\n"; } ?>
「Warning: Invalid argument supplied for foreach()」と言うワーニングエラーが起きてしまいます。
foreach文へ与える変数が、通常は配列になる予定が、たまたま変数が配列でない結果が出てしまった場合。
処理が中断してしまって困ることがあります。
そんな場合の解決法。
foreach文で変数を(array)でキャストします。
<?php // エラーを回避する場合 header('Content-Type: text/html; charset=UTF-8'); mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_http_input("UTF-8"); mb_http_output('UTF-8'); $temp = "test"; // $tempは配列ではない foreach((array)$temp as $key => $val){ echo "Key = $key, Val = $val\n"; } ?>
結果エラーにはならず、配列として処理できます。