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