Return to gettype_settype_variation6.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / general_functions |
1.1 misho 1: --TEST-- 2: Test gettype() & settype() functions : usage variations 3: --SKIPIF-- 4: <?php 5: if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only"); 6: ?> 7: --INI-- 8: precision=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 */ 29: function 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 36: set_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; 43: unset( $unset_var ); 44: 45: class point 46: { 47: var $x; 48: var $y; 49: 50: function point($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: 161: echo "\n*** Testing gettype() & settype() functions : usage variations ***\n"; 162: echo "\n-- Setting type of data to $type --\n"; 163: 164: $loop_count = 1; 165: foreach ($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: 182: echo "Done\n"; 183: ?> 184: --EXPECTF-- 185: 8: Undefined variable: unset_var 186: 8: Undefined variable: undef_var 187: 188: *** Testing gettype() & settype() functions : usage variations *** 189: 190: -- Setting type of data to array -- 191: -- Iteration 1 -- 192: string(4) "NULL" 193: bool(true) 194: array(0) { 195: } 196: string(5) "array" 197: -- Iteration 2 -- 198: string(7) "boolean" 199: bool(true) 200: array(1) { 201: [0]=> 202: bool(false) 203: } 204: string(5) "array" 205: -- Iteration 3 -- 206: string(7) "boolean" 207: bool(true) 208: array(1) { 209: [0]=> 210: bool(true) 211: } 212: string(5) "array" 213: -- Iteration 4 -- 214: string(7) "boolean" 215: bool(true) 216: array(1) { 217: [0]=> 218: bool(true) 219: } 220: string(5) "array" 221: -- Iteration 5 -- 222: string(6) "string" 223: bool(true) 224: array(1) { 225: [0]=> 226: string(1) "ÿ" 227: } 228: string(5) "array" 229: -- Iteration 6 -- 230: string(6) "string" 231: bool(true) 232: array(1) { 233: [0]=> 234: string(1) "f" 235: } 236: string(5) "array" 237: -- Iteration 7 -- 238: string(6) "string" 239: bool(true) 240: array(1) { 241: [0]=> 242: string(2) " 243: 3" 244: } 245: string(5) "array" 246: -- Iteration 8 -- 247: string(6) "string" 248: bool(true) 249: array(1) { 250: [0]=> 251: string(0) "" 252: } 253: string(5) "array" 254: -- Iteration 9 -- 255: string(6) "string" 256: bool(true) 257: array(1) { 258: [0]=> 259: string(0) "" 260: } 261: string(5) "array" 262: -- Iteration 10 -- 263: string(6) "string" 264: bool(true) 265: array(1) { 266: [0]=> 267: string(1) " " 268: } 269: string(5) "array" 270: -- Iteration 11 -- 271: string(6) "string" 272: bool(true) 273: array(1) { 274: [0]=> 275: string(1) " " 276: } 277: string(5) "array" 278: -- Iteration 12 -- 279: string(6) "string" 280: bool(true) 281: array(1) { 282: [0]=> 283: string(2) "10" 284: } 285: string(5) "array" 286: -- Iteration 13 -- 287: string(6) "string" 288: bool(true) 289: array(1) { 290: [0]=> 291: string(2) "10" 292: } 293: string(5) "array" 294: -- Iteration 14 -- 295: string(6) "string" 296: bool(true) 297: array(1) { 298: [0]=> 299: string(8) "10string" 300: } 301: string(5) "array" 302: -- Iteration 15 -- 303: string(6) "string" 304: bool(true) 305: array(1) { 306: [0]=> 307: string(8) "10string" 308: } 309: string(5) "array" 310: -- Iteration 16 -- 311: string(6) "string" 312: bool(true) 313: array(1) { 314: [0]=> 315: string(1) "1" 316: } 317: string(5) "array" 318: -- Iteration 17 -- 319: string(6) "string" 320: bool(true) 321: array(1) { 322: [0]=> 323: string(2) "-1" 324: } 325: string(5) "array" 326: -- Iteration 18 -- 327: string(6) "string" 328: bool(true) 329: array(1) { 330: [0]=> 331: string(3) "1e2" 332: } 333: string(5) "array" 334: -- Iteration 19 -- 335: string(6) "string" 336: bool(true) 337: array(1) { 338: [0]=> 339: string(2) " 1" 340: } 341: string(5) "array" 342: -- Iteration 20 -- 343: string(6) "string" 344: bool(true) 345: array(1) { 346: [0]=> 347: string(22) "2974394749328742328432" 348: } 349: string(5) "array" 350: -- Iteration 21 -- 351: string(6) "string" 352: bool(true) 353: array(1) { 354: [0]=> 355: string(5) "-1e-2" 356: } 357: string(5) "array" 358: -- Iteration 22 -- 359: string(6) "string" 360: bool(true) 361: array(1) { 362: [0]=> 363: string(1) "1" 364: } 365: string(5) "array" 366: -- Iteration 23 -- 367: string(6) "string" 368: bool(true) 369: array(1) { 370: [0]=> 371: string(2) "-1" 372: } 373: string(5) "array" 374: -- Iteration 24 -- 375: string(6) "string" 376: bool(true) 377: array(1) { 378: [0]=> 379: string(3) "1e2" 380: } 381: string(5) "array" 382: -- Iteration 25 -- 383: string(6) "string" 384: bool(true) 385: array(1) { 386: [0]=> 387: string(2) " 1" 388: } 389: string(5) "array" 390: -- Iteration 26 -- 391: string(6) "string" 392: bool(true) 393: array(1) { 394: [0]=> 395: string(22) "2974394749328742328432" 396: } 397: string(5) "array" 398: -- Iteration 27 -- 399: string(6) "string" 400: bool(true) 401: array(1) { 402: [0]=> 403: string(5) "-1e-2" 404: } 405: string(5) "array" 406: -- Iteration 28 -- 407: string(6) "string" 408: bool(true) 409: array(1) { 410: [0]=> 411: string(4) "0xff" 412: } 413: string(5) "array" 414: -- Iteration 29 -- 415: string(6) "string" 416: bool(true) 417: array(1) { 418: [0]=> 419: string(4) "0x55" 420: } 421: string(5) "array" 422: -- Iteration 30 -- 423: string(6) "string" 424: bool(true) 425: array(1) { 426: [0]=> 427: string(5) "0XA55" 428: } 429: string(5) "array" 430: -- Iteration 31 -- 431: string(6) "string" 432: bool(true) 433: array(1) { 434: [0]=> 435: string(5) "0X123" 436: } 437: string(5) "array" 438: -- Iteration 32 -- 439: string(6) "string" 440: bool(true) 441: array(1) { 442: [0]=> 443: string(4) "0123" 444: } 445: string(5) "array" 446: -- Iteration 33 -- 447: string(6) "string" 448: bool(true) 449: array(1) { 450: [0]=> 451: string(4) "0123" 452: } 453: string(5) "array" 454: -- Iteration 34 -- 455: string(6) "string" 456: bool(true) 457: array(1) { 458: [0]=> 459: string(5) "-0123" 460: } 461: string(5) "array" 462: -- Iteration 35 -- 463: string(6) "string" 464: bool(true) 465: array(1) { 466: [0]=> 467: string(5) "+0123" 468: } 469: string(5) "array" 470: -- Iteration 36 -- 471: string(6) "string" 472: bool(true) 473: array(1) { 474: [0]=> 475: string(5) "-0123" 476: } 477: string(5) "array" 478: -- Iteration 37 -- 479: string(6) "string" 480: bool(true) 481: array(1) { 482: [0]=> 483: string(5) "+0123" 484: } 485: string(5) "array" 486: -- Iteration 38 -- 487: string(6) "string" 488: bool(true) 489: array(1) { 490: [0]=> 491: string(8) "-0x80001" 492: } 493: string(5) "array" 494: -- Iteration 39 -- 495: string(6) "string" 496: bool(true) 497: array(1) { 498: [0]=> 499: string(8) "+0x80001" 500: } 501: string(5) "array" 502: -- Iteration 40 -- 503: string(6) "string" 504: bool(true) 505: array(1) { 506: [0]=> 507: string(10) "-0x80001.5" 508: } 509: string(5) "array" 510: -- Iteration 41 -- 511: string(6) "string" 512: bool(true) 513: array(1) { 514: [0]=> 515: string(9) "0x80001.5" 516: } 517: string(5) "array" 518: -- Iteration 42 -- 519: string(6) "string" 520: bool(true) 521: array(1) { 522: [0]=> 523: string(12) "@$%#$%^$%^&^" 524: } 525: string(5) "array" 526: -- Iteration 43 -- 527: string(5) "array" 528: bool(true) 529: array(0) { 530: } 531: string(5) "array" 532: -- Iteration 44 -- 533: string(5) "array" 534: bool(true) 535: array(1) { 536: [0]=> 537: NULL 538: } 539: string(5) "array" 540: -- Iteration 45 -- 541: string(5) "array" 542: bool(true) 543: array(4) { 544: [0]=> 545: int(1) 546: [1]=> 547: int(2) 548: [2]=> 549: int(3) 550: [3]=> 551: int(4) 552: } 553: string(5) "array" 554: -- Iteration 46 -- 555: string(5) "array" 556: bool(true) 557: array(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: } 567: string(5) "array" 568: -- Iteration 47 -- 569: string(5) "array" 570: bool(true) 571: array(3) { 572: [0]=> 573: float(1.5) 574: [1]=> 575: float(2.4) 576: [2]=> 577: float(6500000) 578: } 579: string(5) "array" 580: -- Iteration 48 -- 581: string(6) "double" 582: bool(true) 583: array(1) { 584: [0]=> 585: float(-2147483648) 586: } 587: string(5) "array" 588: -- Iteration 49 -- 589: string(7) "integer" 590: bool(true) 591: array(1) { 592: [0]=> 593: int(2147483647) 594: } 595: string(5) "array" 596: -- Iteration 50 -- 597: string(6) "double" 598: bool(true) 599: array(1) { 600: [0]=> 601: float(2147483649) 602: } 603: string(5) "array" 604: -- Iteration 51 -- 605: string(6) "double" 606: bool(true) 607: array(1) { 608: [0]=> 609: float(1232147483649) 610: } 611: string(5) "array" 612: -- Iteration 52 -- 613: string(7) "integer" 614: bool(true) 615: array(1) { 616: [0]=> 617: int(85) 618: } 619: string(5) "array" 620: -- Iteration 53 -- 621: string(6) "double" 622: bool(true) 623: array(1) { 624: [0]=> 625: float(1058513956921) 626: } 627: string(5) "array" 628: -- Iteration 54 -- 629: string(7) "integer" 630: bool(true) 631: array(1) { 632: [0]=> 633: int(-21903) 634: } 635: string(5) "array" 636: -- Iteration 55 -- 637: string(7) "integer" 638: bool(true) 639: array(1) { 640: [0]=> 641: int(365) 642: } 643: string(5) "array" 644: -- Iteration 56 -- 645: string(7) "integer" 646: bool(true) 647: array(1) { 648: [0]=> 649: int(-365) 650: } 651: string(5) "array" 652: -- Iteration 57 -- 653: string(6) "double" 654: bool(true) 655: array(1) { 656: [0]=> 657: float(80561044571754) 658: } 659: string(5) "array" 660: -- Iteration 58 -- 661: string(6) "double" 662: bool(true) 663: array(1) { 664: [0]=> 665: float(100000) 666: } 667: string(5) "array" 668: -- Iteration 59 -- 669: string(6) "double" 670: bool(true) 671: array(1) { 672: [0]=> 673: float(-100000) 674: } 675: string(5) "array" 676: -- Iteration 60 -- 677: string(6) "double" 678: bool(true) 679: array(1) { 680: [0]=> 681: float(100000) 682: } 683: string(5) "array" 684: -- Iteration 61 -- 685: string(6) "double" 686: bool(true) 687: array(1) { 688: [0]=> 689: float(-100000) 690: } 691: string(5) "array" 692: -- Iteration 62 -- 693: string(6) "double" 694: bool(true) 695: array(1) { 696: [0]=> 697: float(-1.5) 698: } 699: string(5) "array" 700: -- Iteration 63 -- 701: string(6) "double" 702: bool(true) 703: array(1) { 704: [0]=> 705: float(0.5) 706: } 707: string(5) "array" 708: -- Iteration 64 -- 709: string(6) "double" 710: bool(true) 711: array(1) { 712: [0]=> 713: float(-0.5) 714: } 715: string(5) "array" 716: -- Iteration 65 -- 717: string(6) "double" 718: bool(true) 719: array(1) { 720: [0]=> 721: float(500000) 722: } 723: string(5) "array" 724: -- Iteration 66 -- 725: string(6) "double" 726: bool(true) 727: array(1) { 728: [0]=> 729: float(-500000) 730: } 731: string(5) "array" 732: -- Iteration 67 -- 733: string(6) "double" 734: bool(true) 735: array(1) { 736: [0]=> 737: float(-5.0E-7) 738: } 739: string(5) "array" 740: -- Iteration 68 -- 741: string(6) "double" 742: bool(true) 743: array(1) { 744: [0]=> 745: float(500000) 746: } 747: string(5) "array" 748: -- Iteration 69 -- 749: string(6) "double" 750: bool(true) 751: array(1) { 752: [0]=> 753: float(-500000) 754: } 755: string(5) "array" 756: -- Iteration 70 -- 757: string(6) "double" 758: bool(true) 759: array(1) { 760: [0]=> 761: float(512000) 762: } 763: string(5) "array" 764: -- Iteration 71 -- 765: string(6) "double" 766: bool(true) 767: array(1) { 768: [0]=> 769: float(-512000) 770: } 771: string(5) "array" 772: -- Iteration 72 -- 773: string(6) "double" 774: bool(true) 775: array(1) { 776: [0]=> 777: float(5.12E-7) 778: } 779: string(5) "array" 780: -- Iteration 73 -- 781: string(6) "double" 782: bool(true) 783: array(1) { 784: [0]=> 785: float(5.12E-7) 786: } 787: string(5) "array" 788: -- Iteration 74 -- 789: string(6) "double" 790: bool(true) 791: array(1) { 792: [0]=> 793: float(512000) 794: } 795: string(5) "array" 796: -- Iteration 75 -- 797: string(6) "double" 798: bool(true) 799: array(1) { 800: [0]=> 801: float(-512000) 802: } 803: string(5) "array" 804: -- Iteration 76 -- 805: string(6) "object" 806: bool(true) 807: array(2) { 808: ["x"]=> 809: NULL 810: ["y"]=> 811: NULL 812: } 813: string(5) "array" 814: -- Iteration 77 -- 815: string(6) "object" 816: bool(true) 817: array(2) { 818: ["x"]=> 819: float(2.5) 820: ["y"]=> 821: float(40.5) 822: } 823: string(5) "array" 824: -- Iteration 78 -- 825: string(6) "object" 826: bool(true) 827: array(2) { 828: ["x"]=> 829: int(0) 830: ["y"]=> 831: int(0) 832: } 833: string(5) "array" 834: -- Iteration 79 -- 835: string(4) "NULL" 836: bool(true) 837: array(0) { 838: } 839: string(5) "array" 840: -- Iteration 80 -- 841: string(4) "NULL" 842: bool(true) 843: array(0) { 844: } 845: string(5) "array" 846: Done