1--TEST--
2Test gettype() & settype() functions : usage variations
3--SKIPIF--
4<?php
5if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
6?>
7--INI--
8precision=14
9--FILE--
10<?php
11/* Test usage variation of gettype() and settype() functions:
12         settype() to array type.
13   Set type of the data to "array" and verify using gettype
14   Following are performed in the listed sequence:
15     get the current type of the variable
16     set the type of the variable to array type
17     dump the variable to see its new data
18     get the new type of the variable
19*/
20
21/* function to handle catchable errors */
22function foo($errno, $errstr, $errfile, $errline) {
23//	var_dump($errstr);
24   // print error no and error string
25   echo "$errno: $errstr\n";
26}
27//set the error handler, this is required as
28// settype() would fail with catachable fatal error
29set_error_handler("foo");
30
31$var1 = "another string";
32$var2 = array(2,3,4);
33
34class point
35{
36  var $x;
37  var $y;
38
39  function __construct($x, $y) {
40     $this->x = $x;
41     $this->y = $y;
42  }
43
44  function __toString() {
45     return "ObjectPoint";
46  }
47}
48
49$var_values = array (
50  /* nulls */
51  null,
52
53  /* boolean */
54  FALSE,
55  TRUE,
56  true,
57
58  /* strings */
59  "\xFF",
60  "\x66",
61  "\0123",
62  "",
63  '',
64  " ",
65  ' ',
66  /* numerics in the form of string */
67  '10',
68  "10",
69  "10string",
70  '10string',
71  "1",
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  '0x55',
85  '0XA55',
86  '0X123',
87  "0123",
88  '0123',
89  "-0123",
90  "+0123",
91  '-0123',
92  '+0123',
93  "-0x80001", // invalid numerics as its prefix with sign or have decimal points
94  "+0x80001",
95  "-0x80001.5",
96  "0x80001.5",
97  "@$%#$%^$%^&^",
98
99  /* arrays */
100  array(),
101  array(NULL),
102  array(1,2,3,4),
103  array(1 => "one", 2 => "two", "3" => "three", "four" => 4),
104  array(1.5, 2.4, 6.5e6),
105
106  /* integers */
107  -2147483648, // max -ne int value
108  2147483647,
109  2147483649,
110  1232147483649,
111  0x55,
112  0xF674593039, // a hex value > than max int
113  -0X558F,
114  0555,
115  -0555,
116  02224242434343152, // an octal value > than max int
117
118  /* floats */
119  1e5,
120  -1e5,
121  1E5,
122  -1E5,
123  -1.5,
124  .5,
125  -.5,
126  .5e6,
127  -.5e6,
128  -.5e-6,
129  .5e+6,
130  -.5e+6,
131  .512E6,
132  -.512E6,
133  .512E-6,
134  +.512E-6,
135  .512E+6,
136  -.512E+6,
137
138  new point(NULL, NULL),
139  new point(2.5, 40.5),
140  new point(0, 0),
141);
142
143/* test conversion to array type */
144$type = "array";
145
146echo "\n*** Testing gettype() & settype() functions : usage variations ***\n";
147echo "\n-- Setting type of data to $type --\n";
148
149$loop_count = 1;
150foreach ($var_values as $var) {
151  echo "-- Iteration $loop_count --\n"; $loop_count++;
152
153  // get the current data type
154  var_dump( gettype($var) );
155
156  // convert it to null
157  var_dump( settype($var, $type) );
158
159  // dump the converted data
160  var_dump( $var );
161
162  // check the new type after conversion
163  var_dump( gettype($var) );
164}
165
166
167echo "Done\n";
168?>
169--EXPECTF--
170*** Testing gettype() & settype() functions : usage variations ***
171
172-- Setting type of data to array --
173-- Iteration 1 --
174string(4) "NULL"
175bool(true)
176array(0) {
177}
178string(5) "array"
179-- Iteration 2 --
180string(7) "boolean"
181bool(true)
182array(1) {
183  [0]=>
184  bool(false)
185}
186string(5) "array"
187-- Iteration 3 --
188string(7) "boolean"
189bool(true)
190array(1) {
191  [0]=>
192  bool(true)
193}
194string(5) "array"
195-- Iteration 4 --
196string(7) "boolean"
197bool(true)
198array(1) {
199  [0]=>
200  bool(true)
201}
202string(5) "array"
203-- Iteration 5 --
204string(6) "string"
205bool(true)
206array(1) {
207  [0]=>
208  string(1) "�"
209}
210string(5) "array"
211-- Iteration 6 --
212string(6) "string"
213bool(true)
214array(1) {
215  [0]=>
216  string(1) "f"
217}
218string(5) "array"
219-- Iteration 7 --
220string(6) "string"
221bool(true)
222array(1) {
223  [0]=>
224  string(2) "
2253"
226}
227string(5) "array"
228-- Iteration 8 --
229string(6) "string"
230bool(true)
231array(1) {
232  [0]=>
233  string(0) ""
234}
235string(5) "array"
236-- Iteration 9 --
237string(6) "string"
238bool(true)
239array(1) {
240  [0]=>
241  string(0) ""
242}
243string(5) "array"
244-- Iteration 10 --
245string(6) "string"
246bool(true)
247array(1) {
248  [0]=>
249  string(1) " "
250}
251string(5) "array"
252-- Iteration 11 --
253string(6) "string"
254bool(true)
255array(1) {
256  [0]=>
257  string(1) " "
258}
259string(5) "array"
260-- Iteration 12 --
261string(6) "string"
262bool(true)
263array(1) {
264  [0]=>
265  string(2) "10"
266}
267string(5) "array"
268-- Iteration 13 --
269string(6) "string"
270bool(true)
271array(1) {
272  [0]=>
273  string(2) "10"
274}
275string(5) "array"
276-- Iteration 14 --
277string(6) "string"
278bool(true)
279array(1) {
280  [0]=>
281  string(8) "10string"
282}
283string(5) "array"
284-- Iteration 15 --
285string(6) "string"
286bool(true)
287array(1) {
288  [0]=>
289  string(8) "10string"
290}
291string(5) "array"
292-- Iteration 16 --
293string(6) "string"
294bool(true)
295array(1) {
296  [0]=>
297  string(1) "1"
298}
299string(5) "array"
300-- Iteration 17 --
301string(6) "string"
302bool(true)
303array(1) {
304  [0]=>
305  string(2) "-1"
306}
307string(5) "array"
308-- Iteration 18 --
309string(6) "string"
310bool(true)
311array(1) {
312  [0]=>
313  string(3) "1e2"
314}
315string(5) "array"
316-- Iteration 19 --
317string(6) "string"
318bool(true)
319array(1) {
320  [0]=>
321  string(2) " 1"
322}
323string(5) "array"
324-- Iteration 20 --
325string(6) "string"
326bool(true)
327array(1) {
328  [0]=>
329  string(22) "2974394749328742328432"
330}
331string(5) "array"
332-- Iteration 21 --
333string(6) "string"
334bool(true)
335array(1) {
336  [0]=>
337  string(5) "-1e-2"
338}
339string(5) "array"
340-- Iteration 22 --
341string(6) "string"
342bool(true)
343array(1) {
344  [0]=>
345  string(1) "1"
346}
347string(5) "array"
348-- Iteration 23 --
349string(6) "string"
350bool(true)
351array(1) {
352  [0]=>
353  string(2) "-1"
354}
355string(5) "array"
356-- Iteration 24 --
357string(6) "string"
358bool(true)
359array(1) {
360  [0]=>
361  string(3) "1e2"
362}
363string(5) "array"
364-- Iteration 25 --
365string(6) "string"
366bool(true)
367array(1) {
368  [0]=>
369  string(2) " 1"
370}
371string(5) "array"
372-- Iteration 26 --
373string(6) "string"
374bool(true)
375array(1) {
376  [0]=>
377  string(22) "2974394749328742328432"
378}
379string(5) "array"
380-- Iteration 27 --
381string(6) "string"
382bool(true)
383array(1) {
384  [0]=>
385  string(5) "-1e-2"
386}
387string(5) "array"
388-- Iteration 28 --
389string(6) "string"
390bool(true)
391array(1) {
392  [0]=>
393  string(4) "0xff"
394}
395string(5) "array"
396-- Iteration 29 --
397string(6) "string"
398bool(true)
399array(1) {
400  [0]=>
401  string(4) "0x55"
402}
403string(5) "array"
404-- Iteration 30 --
405string(6) "string"
406bool(true)
407array(1) {
408  [0]=>
409  string(5) "0XA55"
410}
411string(5) "array"
412-- Iteration 31 --
413string(6) "string"
414bool(true)
415array(1) {
416  [0]=>
417  string(5) "0X123"
418}
419string(5) "array"
420-- Iteration 32 --
421string(6) "string"
422bool(true)
423array(1) {
424  [0]=>
425  string(4) "0123"
426}
427string(5) "array"
428-- Iteration 33 --
429string(6) "string"
430bool(true)
431array(1) {
432  [0]=>
433  string(4) "0123"
434}
435string(5) "array"
436-- Iteration 34 --
437string(6) "string"
438bool(true)
439array(1) {
440  [0]=>
441  string(5) "-0123"
442}
443string(5) "array"
444-- Iteration 35 --
445string(6) "string"
446bool(true)
447array(1) {
448  [0]=>
449  string(5) "+0123"
450}
451string(5) "array"
452-- Iteration 36 --
453string(6) "string"
454bool(true)
455array(1) {
456  [0]=>
457  string(5) "-0123"
458}
459string(5) "array"
460-- Iteration 37 --
461string(6) "string"
462bool(true)
463array(1) {
464  [0]=>
465  string(5) "+0123"
466}
467string(5) "array"
468-- Iteration 38 --
469string(6) "string"
470bool(true)
471array(1) {
472  [0]=>
473  string(8) "-0x80001"
474}
475string(5) "array"
476-- Iteration 39 --
477string(6) "string"
478bool(true)
479array(1) {
480  [0]=>
481  string(8) "+0x80001"
482}
483string(5) "array"
484-- Iteration 40 --
485string(6) "string"
486bool(true)
487array(1) {
488  [0]=>
489  string(10) "-0x80001.5"
490}
491string(5) "array"
492-- Iteration 41 --
493string(6) "string"
494bool(true)
495array(1) {
496  [0]=>
497  string(9) "0x80001.5"
498}
499string(5) "array"
500-- Iteration 42 --
501string(6) "string"
502bool(true)
503array(1) {
504  [0]=>
505  string(12) "@$%#$%^$%^&^"
506}
507string(5) "array"
508-- Iteration 43 --
509string(5) "array"
510bool(true)
511array(0) {
512}
513string(5) "array"
514-- Iteration 44 --
515string(5) "array"
516bool(true)
517array(1) {
518  [0]=>
519  NULL
520}
521string(5) "array"
522-- Iteration 45 --
523string(5) "array"
524bool(true)
525array(4) {
526  [0]=>
527  int(1)
528  [1]=>
529  int(2)
530  [2]=>
531  int(3)
532  [3]=>
533  int(4)
534}
535string(5) "array"
536-- Iteration 46 --
537string(5) "array"
538bool(true)
539array(4) {
540  [1]=>
541  string(3) "one"
542  [2]=>
543  string(3) "two"
544  [3]=>
545  string(5) "three"
546  ["four"]=>
547  int(4)
548}
549string(5) "array"
550-- Iteration 47 --
551string(5) "array"
552bool(true)
553array(3) {
554  [0]=>
555  float(1.5)
556  [1]=>
557  float(2.4)
558  [2]=>
559  float(6500000)
560}
561string(5) "array"
562-- Iteration 48 --
563string(6) "double"
564bool(true)
565array(1) {
566  [0]=>
567  float(-2147483648)
568}
569string(5) "array"
570-- Iteration 49 --
571string(7) "integer"
572bool(true)
573array(1) {
574  [0]=>
575  int(2147483647)
576}
577string(5) "array"
578-- Iteration 50 --
579string(6) "double"
580bool(true)
581array(1) {
582  [0]=>
583  float(2147483649)
584}
585string(5) "array"
586-- Iteration 51 --
587string(6) "double"
588bool(true)
589array(1) {
590  [0]=>
591  float(1232147483649)
592}
593string(5) "array"
594-- Iteration 52 --
595string(7) "integer"
596bool(true)
597array(1) {
598  [0]=>
599  int(85)
600}
601string(5) "array"
602-- Iteration 53 --
603string(6) "double"
604bool(true)
605array(1) {
606  [0]=>
607  float(1058513956921)
608}
609string(5) "array"
610-- Iteration 54 --
611string(7) "integer"
612bool(true)
613array(1) {
614  [0]=>
615  int(-21903)
616}
617string(5) "array"
618-- Iteration 55 --
619string(7) "integer"
620bool(true)
621array(1) {
622  [0]=>
623  int(365)
624}
625string(5) "array"
626-- Iteration 56 --
627string(7) "integer"
628bool(true)
629array(1) {
630  [0]=>
631  int(-365)
632}
633string(5) "array"
634-- Iteration 57 --
635string(6) "double"
636bool(true)
637array(1) {
638  [0]=>
639  float(80561044571754)
640}
641string(5) "array"
642-- Iteration 58 --
643string(6) "double"
644bool(true)
645array(1) {
646  [0]=>
647  float(100000)
648}
649string(5) "array"
650-- Iteration 59 --
651string(6) "double"
652bool(true)
653array(1) {
654  [0]=>
655  float(-100000)
656}
657string(5) "array"
658-- Iteration 60 --
659string(6) "double"
660bool(true)
661array(1) {
662  [0]=>
663  float(100000)
664}
665string(5) "array"
666-- Iteration 61 --
667string(6) "double"
668bool(true)
669array(1) {
670  [0]=>
671  float(-100000)
672}
673string(5) "array"
674-- Iteration 62 --
675string(6) "double"
676bool(true)
677array(1) {
678  [0]=>
679  float(-1.5)
680}
681string(5) "array"
682-- Iteration 63 --
683string(6) "double"
684bool(true)
685array(1) {
686  [0]=>
687  float(0.5)
688}
689string(5) "array"
690-- Iteration 64 --
691string(6) "double"
692bool(true)
693array(1) {
694  [0]=>
695  float(-0.5)
696}
697string(5) "array"
698-- Iteration 65 --
699string(6) "double"
700bool(true)
701array(1) {
702  [0]=>
703  float(500000)
704}
705string(5) "array"
706-- Iteration 66 --
707string(6) "double"
708bool(true)
709array(1) {
710  [0]=>
711  float(-500000)
712}
713string(5) "array"
714-- Iteration 67 --
715string(6) "double"
716bool(true)
717array(1) {
718  [0]=>
719  float(-5.0E-7)
720}
721string(5) "array"
722-- Iteration 68 --
723string(6) "double"
724bool(true)
725array(1) {
726  [0]=>
727  float(500000)
728}
729string(5) "array"
730-- Iteration 69 --
731string(6) "double"
732bool(true)
733array(1) {
734  [0]=>
735  float(-500000)
736}
737string(5) "array"
738-- Iteration 70 --
739string(6) "double"
740bool(true)
741array(1) {
742  [0]=>
743  float(512000)
744}
745string(5) "array"
746-- Iteration 71 --
747string(6) "double"
748bool(true)
749array(1) {
750  [0]=>
751  float(-512000)
752}
753string(5) "array"
754-- Iteration 72 --
755string(6) "double"
756bool(true)
757array(1) {
758  [0]=>
759  float(5.12E-7)
760}
761string(5) "array"
762-- Iteration 73 --
763string(6) "double"
764bool(true)
765array(1) {
766  [0]=>
767  float(5.12E-7)
768}
769string(5) "array"
770-- Iteration 74 --
771string(6) "double"
772bool(true)
773array(1) {
774  [0]=>
775  float(512000)
776}
777string(5) "array"
778-- Iteration 75 --
779string(6) "double"
780bool(true)
781array(1) {
782  [0]=>
783  float(-512000)
784}
785string(5) "array"
786-- Iteration 76 --
787string(6) "object"
788bool(true)
789array(2) {
790  ["x"]=>
791  NULL
792  ["y"]=>
793  NULL
794}
795string(5) "array"
796-- Iteration 77 --
797string(6) "object"
798bool(true)
799array(2) {
800  ["x"]=>
801  float(2.5)
802  ["y"]=>
803  float(40.5)
804}
805string(5) "array"
806-- Iteration 78 --
807string(6) "object"
808bool(true)
809array(2) {
810  ["x"]=>
811  int(0)
812  ["y"]=>
813  int(0)
814}
815string(5) "array"
816Done
817