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