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