File tree Expand file tree Collapse file tree 2 files changed +190
-0
lines changed Expand file tree Collapse file tree 2 files changed +190
-0
lines changed Original file line number Diff line number Diff line change 1+ --TEST--
2+ NAN coerced to other types
3+ --FILE--
4+ <?php
5+
6+ $ binaryOperators = [
7+ "== " ,
8+ "!= " ,
9+ "=== " ,
10+ "!== " ,
11+ "< " ,
12+ "<= " ,
13+ "> " ,
14+ ">= " ,
15+ "<=> " ,
16+ ];
17+ $ inputs = [
18+ 0 ,
19+ null ,
20+ false ,
21+ true ,
22+ "" ,
23+ [],
24+ NAN ,
25+ ];
26+
27+ $ nan = fdiv (0 , 0 );
28+ var_dump ($ nan );
29+ foreach ($ inputs as $ right ) {
30+ echo 'Using ' ;
31+ var_export ($ right );
32+ echo ' as right op ' , PHP_EOL ;
33+ var_dump ($ nan == $ right );
34+ var_dump ($ nan != $ right );
35+ var_dump ($ nan === $ right );
36+ var_dump ($ nan !== $ right );
37+ var_dump ($ nan < $ right );
38+ var_dump ($ nan <= $ right );
39+ var_dump ($ nan > $ right );
40+ var_dump ($ nan >= $ right );
41+ var_dump ($ nan <=> $ right );
42+ }
43+
44+ ?>
45+ --CLEAN--
46+ <?php
47+ $ fl = __DIR__ . DIRECTORY_SEPARATOR . 'compare_binary_operands_nan_temp.php ' ;
48+ @unlink ($ fl );
49+ ?>
50+ --EXPECT--
51+ float(NAN)
52+ Using 0 as right op
53+ bool(false)
54+ bool(true)
55+ bool(false)
56+ bool(true)
57+ bool(false)
58+ bool(false)
59+ bool(false)
60+ bool(false)
61+ int(1)
62+ Using NULL as right op
63+ bool(false)
64+ bool(true)
65+ bool(false)
66+ bool(true)
67+ bool(false)
68+ bool(false)
69+ bool(false)
70+ bool(false)
71+ int(1)
72+ Using false as right op
73+ bool(false)
74+ bool(true)
75+ bool(false)
76+ bool(true)
77+ bool(false)
78+ bool(false)
79+ bool(false)
80+ bool(false)
81+ int(1)
82+ Using true as right op
83+ bool(false)
84+ bool(true)
85+ bool(false)
86+ bool(true)
87+ bool(false)
88+ bool(false)
89+ bool(false)
90+ bool(false)
91+ int(1)
92+ Using '' as right op
93+ bool(false)
94+ bool(true)
95+ bool(false)
96+ bool(true)
97+ bool(false)
98+ bool(false)
99+ bool(false)
100+ bool(false)
101+ int(1)
102+ Using array (
103+ ) as right op
104+ bool(false)
105+ bool(true)
106+ bool(false)
107+ bool(true)
108+ bool(false)
109+ bool(false)
110+ bool(false)
111+ bool(false)
112+ int(1)
113+ Using NAN as right op
114+ bool(false)
115+ bool(true)
116+ bool(false)
117+ bool(true)
118+ bool(false)
119+ bool(false)
120+ bool(false)
121+ bool(false)
122+ int(1)
123+
Original file line number Diff line number Diff line change 1+ --TEST--
2+ NAN coerced to other types
3+ --FILE--
4+ <?php
5+
6+ $ nan = fdiv (0 , 0 );
7+ var_dump ($ nan );
8+
9+ function implicit_to_bool (bool $ v ) {
10+ var_dump ($ v );
11+ }
12+ function implicit_to_string (string $ v ) {
13+ var_dump ($ v );
14+ }
15+
16+ implicit_to_bool ($ nan );
17+ implicit_to_string ($ nan );
18+
19+ var_dump ((int ) $ nan );
20+ var_dump ((bool ) $ nan );
21+ var_dump ((string ) $ nan );
22+ var_dump ((array ) $ nan );
23+ var_dump ((object ) $ nan );
24+
25+ $ types = [
26+ 'null ' ,
27+ 'bool ' ,
28+ 'int ' ,
29+ 'string ' ,
30+ 'array ' ,
31+ 'object ' ,
32+ ];
33+
34+ foreach ($ types as $ type ) {
35+ $ nan = fdiv (0 , 0 );
36+ settype ($ nan , $ type );
37+ var_dump ($ nan );
38+ }
39+
40+ ?>
41+ --EXPECTF--
42+ float(NAN)
43+ bool(true)
44+ string(3) "NAN"
45+ int(0)
46+ bool(true)
47+ string(3) "NAN"
48+ array(1) {
49+ [0]=>
50+ float(NAN)
51+ }
52+ object(stdClass)#%d (1) {
53+ ["scalar"]=>
54+ float(NAN)
55+ }
56+ NULL
57+ bool(true)
58+ int(0)
59+ string(3) "NAN"
60+ array(1) {
61+ [0]=>
62+ float(NAN)
63+ }
64+ object(stdClass)#%d (1) {
65+ ["scalar"]=>
66+ float(NAN)
67+ }
You can’t perform that action at this time.
0 commit comments