この時に0で始まる数値のことを考えずにコードを書くと不具合がでてしまうことがあります。
例えば以下のようなコード
$errors = array (01, 02, 08, 09);
foreach ($errors as $error_code) {
switch ($error_code) {
case 01:
echo 1;
break;
case 02:
echo 2;
break;
case 08:
echo 8;
break;
case 09:
echo 9;
break;
}
}
こんなコードを書くと、08の時にcase 08とcase 09を実行し、09の時も同じようにcase 08と09を実行します。PHPだけじゃなくて他の言語でもそうだと思うけど、0から始まる数値は8進数として扱われます。
上記のコードの場合、0〜7までは動作するけど、8進数では8になると桁が繰り上がるので8以上の値は存在しません。
この時、08の時も09の時も0として扱われているので、 case 08 = case 09 = case 0ということになります。
なので、もし、$errorsの配列に'00'という値があれば、00が回って来た時にもcase 08と case 09を実行していることになります。
ゼロ埋めした数値は時々使うことがあるので、気を付けないといけませんなぁ。
0 件のコメント:
コメントを投稿