PHP fatalって0だったんですか? 'fatal' == 0が成立しました。
if( $sts == 'fatal' ){
エラー処理
}
とか、よくあるソースコードかと思います。
$stsは正常系(数値)と異常系(fatal)を混在させていました。
これ、実は、以下ソースコードだとエラー処理が成立します。
$sts = 0;
if( $sts == 'fatal' ){
エラー処理 <=ここに来ます。
}
まじですか?文字列と数値ですよ?==が成立するなんて思いもつきませんが?本当です。実環境で相当悩みました。ソースコードレビューではわからない不具合ですね・・
FreeBSD 9.1のPHP 7.4.19 で確認しました。
$sts = 1;echo ($sts == 'fatal'); <= 不成立です。
echo (0 == 'fatal'); <= 不成立ですが・・・
$sts = 0;echo ($sts == 'fatal');
1 <= 成立です。
これってPHPの仕様なんでしょうかね?
久しぶりにドキドキました。謎の動作でどハマりしましたよ・・
ソースは以下のように修正したところ、仕様通りの動作となりました。
if( is_numeric($sts) == false && $sts == 'fatal' ){
エラー処理
}
エラー処理
}
とか、よくあるソースコードかと思います。
$stsは正常系(数値)と異常系(fatal)を混在させていました。
これ、実は、以下ソースコードだとエラー処理が成立します。
$sts = 0;
if( $sts == 'fatal' ){
エラー処理 <=ここに来ます。
}
まじですか?文字列と数値ですよ?==が成立するなんて思いもつきませんが?本当です。実環境で相当悩みました。ソースコードレビューではわからない不具合ですね・・
FreeBSD 9.1のPHP 7.4.19 で確認しました。
$sts = 1;echo ($sts == 'fatal'); <= 不成立です。
echo (0 == 'fatal'); <= 不成立ですが・・・
$sts = 0;echo ($sts == 'fatal');
1 <= 成立です。
これってPHPの仕様なんでしょうかね?
久しぶりにドキドキました。謎の動作でどハマりしましたよ・・
ソースは以下のように修正したところ、仕様通りの動作となりました。
if( is_numeric($sts) == false && $sts == 'fatal' ){
エラー処理
}
- 初期費用0円(2022年8月4日に撤廃)
- 安定したサイト運営が可能(CPU/メモリ リソース保証 6コア/8GB〜)
- 契約中は独自ドメインつき 独自ドメイン永久無料特典があります
- 最大10日間無料で、サーバーのお試し利用ができます
- ディスクキャッシュも高速 NVMe SSDを採用(300GB〜)
- 大量アクセスでも安心 転送量は無制限
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/10831430
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック