1--TEST-- 2NaN handling: 002 3--INI-- 4opcache.enable=1 5opcache.enable_cli=1 6opcache.file_update_protection=0 7opcache.protect_memory=1 8--FILE-- 9<?php 10function test(float $a) { 11 if ($a) var_dump("1"); 12 if (!$a) var_dump("2"); 13 var_dump((bool) $a); 14 var_dump(!$a); 15 echo "\n"; 16} 17function test1(float $a, bool $b) { 18 var_dump($a && $b); //JMPNZ_EX 19} 20function test2(float $a, bool $b) { 21 var_dump($a || $b); // JMPZ_EX 22} 23test(NAN); 24test(1.0); 25test(0.0); 26 27test1(NAN, true); 28test1(1.0, true); 29test1(0.0, true); 30echo "\n"; 31 32test2(NAN, false); 33test2(1.0, false); 34test2(0.0, false); 35?> 36--EXPECT-- 37string(1) "1" 38bool(true) 39bool(false) 40 41string(1) "1" 42bool(true) 43bool(false) 44 45string(1) "2" 46bool(false) 47bool(true) 48 49bool(true) 50bool(true) 51bool(false) 52 53bool(true) 54bool(true) 55bool(false) 56