1--TEST--
2Test is_numeric() function
3--FILE--
4<?php
5echo "*** Testing is_numeric() with valid numeric values ***\n";
6// different valid numeric  values
7$numerics = array(
8  0,
9  1,
10  -1,
11  -0,
12  +0,
13  0.0,
14  -0.0,
15  +0.0,
16  1.0,
17  -1.0,
18  +1.0,
19  .5,
20  -.5,
21  +.5,
22  -.5e-2,
23  .5e-2,
24  +.5e-2,
25  +.5E+2,
26  0.70000000,
27  +0.70000000,
28  -0.70000000,
29  1234567890123456,
30  -1234567890123456,
31  984847472827282718178,
32  -984847472827282718178,
33  123.56e30,
34  123.56E30,
35  426.45e-30,
36  5657.3E-40,
37  3486.36e+40,
38  3486.36E+90,
39  -3486.36E+10,
40  -3486.36e+80,
41  -426.45e-50,
42  -426.45E-99,
43  1e2,
44  -1e2,
45  -1e-2,
46  +1e2,
47  +1e+2,
48  +1e-2,
49  +1e+2,
50  2245555555555555.444,
51  1.444444444444444444,
52  0xff,	// hexa decimal numbers
53  0xFF,
54  //0x1111111111111111111111,
55  -0x1111111,
56  +0x6698319,
57  01000000000000000000000,
58  0123,
59  0345,
60  -0200001,
61  -0200001.7,
62  0200001.7,
63  +0200001,
64  +0200001.7,
65  +0200001.7,
66  2.00000000000000000000001, // a float value with more precision points
67  "1",	// numeric in the form of string
68  "-1",
69  "1e2",
70  " 1",
71  "1 ",
72  "2974394749328742328432",
73  "-1e-2",
74  '1',
75  '-1',
76  '1e2',
77  ' 1',
78  '1 ',
79  '2974394749328742328432',
80  '-1e-2',
81  "0123",
82  '0123',
83  "-0123",
84  "+0123",
85  '-0123',
86  '+0123'
87);
88/* loop to check that is_numeric() recognizes different
89   numeric values, expected output: bool(true) */
90$loop_counter = 1;
91foreach ($numerics as $num ) {
92  echo "-- Iteration $loop_counter --\n"; $loop_counter++;
93  var_dump( is_numeric($num) );
94}
95
96echo "\n*** Testing is_numeric() on non numeric types ***\n";
97
98// get a resource type variable
99$fp = fopen (__FILE__, "r");
100$dfp = opendir ( __DIR__ );
101
102// unset variable
103$unset_var = 10.5;
104unset ($unset_var);
105
106// other types in a array
107$not_numerics = array(
108  "0x80001",
109  "-0x80001",
110  "+0x80001",
111  "-0x80001.5",
112  "0x80001.5",
113  new stdclass, // object
114  $fp,  // resource
115  $dfp,
116  array(),
117  array("string"),
118  "",
119  "- 1",
120  "1.2.4",
121  "1e7.6",
122  "3FF",
123  "20 test",
124  "3.6test",
125  "1,000",
126  "NULL",
127  "true",
128  true,
129  NULL,
130  null,
131  TRUE,
132  FALSE,
133  false,
134  @$unset_var, // unset variable
135  @$undefined_var
136);
137/* loop through the $not_numerics to see working of
138   is_numeric() on non numeric values, expected output: bool(false) */
139$loop_counter = 1;
140foreach ($not_numerics as $type ) {
141  echo "-- Iteration $loop_counter --\n"; $loop_counter++;
142  var_dump( is_numeric($type) );
143}
144
145echo "Done\n";
146
147// close the resources used
148fclose($fp);
149closedir($dfp);
150
151?>
152--EXPECT--
153*** Testing is_numeric() with valid numeric values ***
154-- Iteration 1 --
155bool(true)
156-- Iteration 2 --
157bool(true)
158-- Iteration 3 --
159bool(true)
160-- Iteration 4 --
161bool(true)
162-- Iteration 5 --
163bool(true)
164-- Iteration 6 --
165bool(true)
166-- Iteration 7 --
167bool(true)
168-- Iteration 8 --
169bool(true)
170-- Iteration 9 --
171bool(true)
172-- Iteration 10 --
173bool(true)
174-- Iteration 11 --
175bool(true)
176-- Iteration 12 --
177bool(true)
178-- Iteration 13 --
179bool(true)
180-- Iteration 14 --
181bool(true)
182-- Iteration 15 --
183bool(true)
184-- Iteration 16 --
185bool(true)
186-- Iteration 17 --
187bool(true)
188-- Iteration 18 --
189bool(true)
190-- Iteration 19 --
191bool(true)
192-- Iteration 20 --
193bool(true)
194-- Iteration 21 --
195bool(true)
196-- Iteration 22 --
197bool(true)
198-- Iteration 23 --
199bool(true)
200-- Iteration 24 --
201bool(true)
202-- Iteration 25 --
203bool(true)
204-- Iteration 26 --
205bool(true)
206-- Iteration 27 --
207bool(true)
208-- Iteration 28 --
209bool(true)
210-- Iteration 29 --
211bool(true)
212-- Iteration 30 --
213bool(true)
214-- Iteration 31 --
215bool(true)
216-- Iteration 32 --
217bool(true)
218-- Iteration 33 --
219bool(true)
220-- Iteration 34 --
221bool(true)
222-- Iteration 35 --
223bool(true)
224-- Iteration 36 --
225bool(true)
226-- Iteration 37 --
227bool(true)
228-- Iteration 38 --
229bool(true)
230-- Iteration 39 --
231bool(true)
232-- Iteration 40 --
233bool(true)
234-- Iteration 41 --
235bool(true)
236-- Iteration 42 --
237bool(true)
238-- Iteration 43 --
239bool(true)
240-- Iteration 44 --
241bool(true)
242-- Iteration 45 --
243bool(true)
244-- Iteration 46 --
245bool(true)
246-- Iteration 47 --
247bool(true)
248-- Iteration 48 --
249bool(true)
250-- Iteration 49 --
251bool(true)
252-- Iteration 50 --
253bool(true)
254-- Iteration 51 --
255bool(true)
256-- Iteration 52 --
257bool(true)
258-- Iteration 53 --
259bool(true)
260-- Iteration 54 --
261bool(true)
262-- Iteration 55 --
263bool(true)
264-- Iteration 56 --
265bool(true)
266-- Iteration 57 --
267bool(true)
268-- Iteration 58 --
269bool(true)
270-- Iteration 59 --
271bool(true)
272-- Iteration 60 --
273bool(true)
274-- Iteration 61 --
275bool(true)
276-- Iteration 62 --
277bool(true)
278-- Iteration 63 --
279bool(true)
280-- Iteration 64 --
281bool(true)
282-- Iteration 65 --
283bool(true)
284-- Iteration 66 --
285bool(true)
286-- Iteration 67 --
287bool(true)
288-- Iteration 68 --
289bool(true)
290-- Iteration 69 --
291bool(true)
292-- Iteration 70 --
293bool(true)
294-- Iteration 71 --
295bool(true)
296-- Iteration 72 --
297bool(true)
298-- Iteration 73 --
299bool(true)
300-- Iteration 74 --
301bool(true)
302-- Iteration 75 --
303bool(true)
304-- Iteration 76 --
305bool(true)
306-- Iteration 77 --
307bool(true)
308-- Iteration 78 --
309bool(true)
310
311*** Testing is_numeric() on non numeric types ***
312-- Iteration 1 --
313bool(false)
314-- Iteration 2 --
315bool(false)
316-- Iteration 3 --
317bool(false)
318-- Iteration 4 --
319bool(false)
320-- Iteration 5 --
321bool(false)
322-- Iteration 6 --
323bool(false)
324-- Iteration 7 --
325bool(false)
326-- Iteration 8 --
327bool(false)
328-- Iteration 9 --
329bool(false)
330-- Iteration 10 --
331bool(false)
332-- Iteration 11 --
333bool(false)
334-- Iteration 12 --
335bool(false)
336-- Iteration 13 --
337bool(false)
338-- Iteration 14 --
339bool(false)
340-- Iteration 15 --
341bool(false)
342-- Iteration 16 --
343bool(false)
344-- Iteration 17 --
345bool(false)
346-- Iteration 18 --
347bool(false)
348-- Iteration 19 --
349bool(false)
350-- Iteration 20 --
351bool(false)
352-- Iteration 21 --
353bool(false)
354-- Iteration 22 --
355bool(false)
356-- Iteration 23 --
357bool(false)
358-- Iteration 24 --
359bool(false)
360-- Iteration 25 --
361bool(false)
362-- Iteration 26 --
363bool(false)
364-- Iteration 27 --
365bool(false)
366-- Iteration 28 --
367bool(false)
368Done
369