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