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