PHPのバージョンにNANを手渡しNAN
とNAN
振る舞いに等しい変数を異なるPHPのバージョンによっては、なぜ誰も説明できますか?は正しく
PHP Version: 5.3.5
0 < NAN ? TRUE
0 > NAN ? TRUE
0 == NAN ? FALSE
0 < $nan ? TRUE
0 > $nan ? TRUE
0 == $nan ? FALSE
is_nan(NAN) TRUE
is_nan($nan) TRUE
gettype(NAN) is double
gettype($nan) is double
PHP Version: 5.6.30 (and 5.5.30, 5.4.45)
0 < NAN ? FALSE
0 > NAN ? FALSE
0 == NAN ? FALSE
0 < $nan ? FALSE
0 > $nan ? FALSE
0 == $nan ? FALSE
is_nan(NAN) TRUE
is_nan($nan) TRUE
gettype(NAN) is double
gettype($nan) is double
PHP Version: 7.1.1 (and 7.0.15)
0 < NAN ? TRUE
0 > NAN ? TRUE
0 == NAN ? FALSE
0 < $nan ? FALSE
0 > $nan ? FALSE
0 == $nan ? FALSE
is_nan(NAN) TRUE
is_nan($nan) TRUE
gettype(NAN) is double
gettype($nan) is double
は、PHPでの関数が依存することができます:私はPHP(使用MAMP)の多くのバージョンされている次のような結果に対してこのコードを実行した場合、今
$nan = NAN;
print "PHP Version: " . phpversion(). "\n" .
'0 < NAN ? ' . (0 < NAN ? 'TRUE' : 'FALSE') . "\n" .
'0 > NAN ? ' . (0 > NAN ? 'TRUE' : 'FALSE') . "\n" .
'0 == NAN ? ' . (0 == NAN ? 'TRUE' : 'FALSE') . "\n" .
'0 < $nan ? ' . (0 < $nan ? 'TRUE' : 'FALSE') . "\n" .
'0 > $nan ? ' . (0 > $nan ? 'TRUE' : 'FALSE') . "\n" .
'0 == $nan ? ' . (0 == $nan ? 'TRUE' : 'FALSE') . "\n" .
'is_nan(NAN) ' . (is_nan(NAN) ? 'TRUE' : 'FALSE') . "\n" .
'is_nan($nan) ' . (is_nan($nan) ? 'TRUE' : 'FALSE') . "\n" .
'gettype(NAN) is ' . gettype(NAN) . "\n" .
'gettype($nan) is ' . gettype($nan) . "\n";
:
は、次のコードを考えてみましょうNANとの比較でNANをis_nan()
とだけ使用する必要がありますか?
感謝。 7+ではコンパイルベースの評価でTRUEの結果が得られるのは奇妙なことです。私のために家を取ることは、NANの比較の可能性を避けることです... – Andy
それは実際に把握するのが楽しいでした。 :) FYI、バグが報告されました:https://bugs.php.net/bug.php?id=74974 – pmmaga