Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_arrays_005.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: serialization: arrays with references, nested
! 3: --FILE--
! 4: <?php
! 5: /* Prototype : proto string serialize(mixed variable)
! 6: * Description: Returns a string representation of variable (which can later be unserialized)
! 7: * Source code: ext/standard/var.c
! 8: * Alias to functions:
! 9: */
! 10: /* Prototype : proto mixed unserialize(string variable_representation)
! 11: * Description: Takes a string representation of variable and recreates it
! 12: * Source code: ext/standard/var.c
! 13: * Alias to functions:
! 14: */
! 15:
! 16: function check(&$a) {
! 17: var_dump($a);
! 18: $ser = serialize($a);
! 19: var_dump($ser);
! 20:
! 21: $b = unserialize($ser);
! 22:
! 23: // Change each element and dump result.
! 24: foreach($b as $k=>$v) {
! 25: if (is_array($v)){
! 26: foreach($b[$k] as $sk=>$sv) {
! 27: $b[$k][$sk] = "b$k.$sk.changed";
! 28: var_dump($b);
! 29: }
! 30: } else {
! 31: $b[$k] = "b$k.changed";
! 32: var_dump($b);
! 33: }
! 34: }
! 35: }
! 36:
! 37: echo "\n\n--- Nested array references 1 element in containing array:\n";
! 38: $a = array();
! 39: $c = array(1,1,&$a);
! 40: $a[0] = &$c[0];
! 41: $a[1] = 1;
! 42: check($c);
! 43:
! 44: echo "\n\n--- Nested array references 1 element in containing array (slightly different):\n";
! 45: $a = array();
! 46: $c = array(1,&$a,1);
! 47: $a[0] = 1;
! 48: $a[1] = &$c[0];
! 49: check($c);
! 50:
! 51: echo "\n\n--- Nested array references 2 elements in containing array:\n";
! 52: $a = array();
! 53: $c = array(1,1,&$a);
! 54: $a[0] = &$c[0];
! 55: $a[1] = &$c[1];
! 56: check($c);
! 57:
! 58:
! 59: echo "\n\n--- Containing array references 1 element in nested array:\n";
! 60: $a = array();
! 61: $a[0] = 1;
! 62: $a[1] = 1;
! 63: $c = array(1,&$a[0],&$a);
! 64: check($c);
! 65:
! 66: echo "\n\n--- Containing array references 2 elements in nested array:\n";
! 67: $a = array();
! 68: $a[0] = 1;
! 69: $a[1] = 1;
! 70: $c = array(&$a[0],&$a[1],&$a);
! 71: check($c);
! 72:
! 73: echo "\n\n--- Nested array references container:\n";
! 74: $a = array();
! 75: $c = array(1,1,&$a);
! 76: $a[0] = 1;
! 77: $a[1] = &$c;
! 78: check($c);
! 79:
! 80: ?>
! 81: --EXPECTF--
! 82: --- Nested array references 1 element in containing array:
! 83: array(3) {
! 84: [0]=>
! 85: &int(1)
! 86: [1]=>
! 87: int(1)
! 88: [2]=>
! 89: &array(2) {
! 90: [0]=>
! 91: &int(1)
! 92: [1]=>
! 93: int(1)
! 94: }
! 95: }
! 96: string(48) "a:3:{i:0;i:1;i:1;i:1;i:2;a:2:{i:0;R:2;i:1;i:1;}}"
! 97: array(3) {
! 98: [0]=>
! 99: &string(10) "b0.changed"
! 100: [1]=>
! 101: int(1)
! 102: [2]=>
! 103: array(2) {
! 104: [0]=>
! 105: &string(10) "b0.changed"
! 106: [1]=>
! 107: int(1)
! 108: }
! 109: }
! 110: array(3) {
! 111: [0]=>
! 112: &string(10) "b0.changed"
! 113: [1]=>
! 114: string(10) "b1.changed"
! 115: [2]=>
! 116: array(2) {
! 117: [0]=>
! 118: &string(10) "b0.changed"
! 119: [1]=>
! 120: int(1)
! 121: }
! 122: }
! 123: array(3) {
! 124: [0]=>
! 125: &string(12) "b2.0.changed"
! 126: [1]=>
! 127: string(10) "b1.changed"
! 128: [2]=>
! 129: array(2) {
! 130: [0]=>
! 131: &string(12) "b2.0.changed"
! 132: [1]=>
! 133: int(1)
! 134: }
! 135: }
! 136: array(3) {
! 137: [0]=>
! 138: &string(12) "b2.0.changed"
! 139: [1]=>
! 140: string(10) "b1.changed"
! 141: [2]=>
! 142: array(2) {
! 143: [0]=>
! 144: &string(12) "b2.0.changed"
! 145: [1]=>
! 146: string(12) "b2.1.changed"
! 147: }
! 148: }
! 149:
! 150:
! 151: --- Nested array references 1 element in containing array (slightly different):
! 152: array(3) {
! 153: [0]=>
! 154: &int(1)
! 155: [1]=>
! 156: &array(2) {
! 157: [0]=>
! 158: int(1)
! 159: [1]=>
! 160: &int(1)
! 161: }
! 162: [2]=>
! 163: int(1)
! 164: }
! 165: string(48) "a:3:{i:0;i:1;i:1;a:2:{i:0;i:1;i:1;R:2;}i:2;i:1;}"
! 166: array(3) {
! 167: [0]=>
! 168: &string(10) "b0.changed"
! 169: [1]=>
! 170: array(2) {
! 171: [0]=>
! 172: int(1)
! 173: [1]=>
! 174: &string(10) "b0.changed"
! 175: }
! 176: [2]=>
! 177: int(1)
! 178: }
! 179: array(3) {
! 180: [0]=>
! 181: &string(10) "b0.changed"
! 182: [1]=>
! 183: array(2) {
! 184: [0]=>
! 185: string(12) "b1.0.changed"
! 186: [1]=>
! 187: &string(10) "b0.changed"
! 188: }
! 189: [2]=>
! 190: int(1)
! 191: }
! 192: array(3) {
! 193: [0]=>
! 194: &string(12) "b1.1.changed"
! 195: [1]=>
! 196: array(2) {
! 197: [0]=>
! 198: string(12) "b1.0.changed"
! 199: [1]=>
! 200: &string(12) "b1.1.changed"
! 201: }
! 202: [2]=>
! 203: int(1)
! 204: }
! 205: array(3) {
! 206: [0]=>
! 207: &string(12) "b1.1.changed"
! 208: [1]=>
! 209: array(2) {
! 210: [0]=>
! 211: string(12) "b1.0.changed"
! 212: [1]=>
! 213: &string(12) "b1.1.changed"
! 214: }
! 215: [2]=>
! 216: string(10) "b2.changed"
! 217: }
! 218:
! 219:
! 220: --- Nested array references 2 elements in containing array:
! 221: array(3) {
! 222: [0]=>
! 223: &int(1)
! 224: [1]=>
! 225: &int(1)
! 226: [2]=>
! 227: &array(2) {
! 228: [0]=>
! 229: &int(1)
! 230: [1]=>
! 231: &int(1)
! 232: }
! 233: }
! 234: string(48) "a:3:{i:0;i:1;i:1;i:1;i:2;a:2:{i:0;R:2;i:1;R:3;}}"
! 235: array(3) {
! 236: [0]=>
! 237: &string(10) "b0.changed"
! 238: [1]=>
! 239: &int(1)
! 240: [2]=>
! 241: array(2) {
! 242: [0]=>
! 243: &string(10) "b0.changed"
! 244: [1]=>
! 245: &int(1)
! 246: }
! 247: }
! 248: array(3) {
! 249: [0]=>
! 250: &string(10) "b0.changed"
! 251: [1]=>
! 252: &string(10) "b1.changed"
! 253: [2]=>
! 254: array(2) {
! 255: [0]=>
! 256: &string(10) "b0.changed"
! 257: [1]=>
! 258: &string(10) "b1.changed"
! 259: }
! 260: }
! 261: array(3) {
! 262: [0]=>
! 263: &string(12) "b2.0.changed"
! 264: [1]=>
! 265: &string(10) "b1.changed"
! 266: [2]=>
! 267: array(2) {
! 268: [0]=>
! 269: &string(12) "b2.0.changed"
! 270: [1]=>
! 271: &string(10) "b1.changed"
! 272: }
! 273: }
! 274: array(3) {
! 275: [0]=>
! 276: &string(12) "b2.0.changed"
! 277: [1]=>
! 278: &string(12) "b2.1.changed"
! 279: [2]=>
! 280: array(2) {
! 281: [0]=>
! 282: &string(12) "b2.0.changed"
! 283: [1]=>
! 284: &string(12) "b2.1.changed"
! 285: }
! 286: }
! 287:
! 288:
! 289: --- Containing array references 1 element in nested array:
! 290: array(3) {
! 291: [0]=>
! 292: int(1)
! 293: [1]=>
! 294: &int(1)
! 295: [2]=>
! 296: &array(2) {
! 297: [0]=>
! 298: &int(1)
! 299: [1]=>
! 300: int(1)
! 301: }
! 302: }
! 303: string(48) "a:3:{i:0;i:1;i:1;i:1;i:2;a:2:{i:0;R:3;i:1;i:1;}}"
! 304: array(3) {
! 305: [0]=>
! 306: string(10) "b0.changed"
! 307: [1]=>
! 308: &int(1)
! 309: [2]=>
! 310: array(2) {
! 311: [0]=>
! 312: &int(1)
! 313: [1]=>
! 314: int(1)
! 315: }
! 316: }
! 317: array(3) {
! 318: [0]=>
! 319: string(10) "b0.changed"
! 320: [1]=>
! 321: &string(10) "b1.changed"
! 322: [2]=>
! 323: array(2) {
! 324: [0]=>
! 325: &string(10) "b1.changed"
! 326: [1]=>
! 327: int(1)
! 328: }
! 329: }
! 330: array(3) {
! 331: [0]=>
! 332: string(10) "b0.changed"
! 333: [1]=>
! 334: &string(12) "b2.0.changed"
! 335: [2]=>
! 336: array(2) {
! 337: [0]=>
! 338: &string(12) "b2.0.changed"
! 339: [1]=>
! 340: int(1)
! 341: }
! 342: }
! 343: array(3) {
! 344: [0]=>
! 345: string(10) "b0.changed"
! 346: [1]=>
! 347: &string(12) "b2.0.changed"
! 348: [2]=>
! 349: array(2) {
! 350: [0]=>
! 351: &string(12) "b2.0.changed"
! 352: [1]=>
! 353: string(12) "b2.1.changed"
! 354: }
! 355: }
! 356:
! 357:
! 358: --- Containing array references 2 elements in nested array:
! 359: array(3) {
! 360: [0]=>
! 361: &int(1)
! 362: [1]=>
! 363: &int(1)
! 364: [2]=>
! 365: &array(2) {
! 366: [0]=>
! 367: &int(1)
! 368: [1]=>
! 369: &int(1)
! 370: }
! 371: }
! 372: string(48) "a:3:{i:0;i:1;i:1;i:1;i:2;a:2:{i:0;R:2;i:1;R:3;}}"
! 373: array(3) {
! 374: [0]=>
! 375: &string(10) "b0.changed"
! 376: [1]=>
! 377: &int(1)
! 378: [2]=>
! 379: array(2) {
! 380: [0]=>
! 381: &string(10) "b0.changed"
! 382: [1]=>
! 383: &int(1)
! 384: }
! 385: }
! 386: array(3) {
! 387: [0]=>
! 388: &string(10) "b0.changed"
! 389: [1]=>
! 390: &string(10) "b1.changed"
! 391: [2]=>
! 392: array(2) {
! 393: [0]=>
! 394: &string(10) "b0.changed"
! 395: [1]=>
! 396: &string(10) "b1.changed"
! 397: }
! 398: }
! 399: array(3) {
! 400: [0]=>
! 401: &string(12) "b2.0.changed"
! 402: [1]=>
! 403: &string(10) "b1.changed"
! 404: [2]=>
! 405: array(2) {
! 406: [0]=>
! 407: &string(12) "b2.0.changed"
! 408: [1]=>
! 409: &string(10) "b1.changed"
! 410: }
! 411: }
! 412: array(3) {
! 413: [0]=>
! 414: &string(12) "b2.0.changed"
! 415: [1]=>
! 416: &string(12) "b2.1.changed"
! 417: [2]=>
! 418: array(2) {
! 419: [0]=>
! 420: &string(12) "b2.0.changed"
! 421: [1]=>
! 422: &string(12) "b2.1.changed"
! 423: }
! 424: }
! 425:
! 426:
! 427: --- Nested array references container:
! 428: array(3) {
! 429: [0]=>
! 430: int(1)
! 431: [1]=>
! 432: int(1)
! 433: [2]=>
! 434: &array(2) {
! 435: [0]=>
! 436: int(1)
! 437: [1]=>
! 438: &array(3) {
! 439: [0]=>
! 440: int(1)
! 441: [1]=>
! 442: int(1)
! 443: [2]=>
! 444: *RECURSION*
! 445: }
! 446: }
! 447: }
! 448: string(74) "a:3:{i:0;i:1;i:1;i:1;i:2;a:2:{i:0;i:1;i:1;a:3:{i:0;i:1;i:1;i:1;i:2;R:4;}}}"
! 449: array(3) {
! 450: [0]=>
! 451: string(10) "b0.changed"
! 452: [1]=>
! 453: int(1)
! 454: [2]=>
! 455: &array(2) {
! 456: [0]=>
! 457: int(1)
! 458: [1]=>
! 459: array(3) {
! 460: [0]=>
! 461: int(1)
! 462: [1]=>
! 463: int(1)
! 464: [2]=>
! 465: *RECURSION*
! 466: }
! 467: }
! 468: }
! 469: array(3) {
! 470: [0]=>
! 471: string(10) "b0.changed"
! 472: [1]=>
! 473: string(10) "b1.changed"
! 474: [2]=>
! 475: &array(2) {
! 476: [0]=>
! 477: int(1)
! 478: [1]=>
! 479: array(3) {
! 480: [0]=>
! 481: int(1)
! 482: [1]=>
! 483: int(1)
! 484: [2]=>
! 485: *RECURSION*
! 486: }
! 487: }
! 488: }
! 489: array(3) {
! 490: [0]=>
! 491: string(10) "b0.changed"
! 492: [1]=>
! 493: string(10) "b1.changed"
! 494: [2]=>
! 495: &array(2) {
! 496: [0]=>
! 497: string(12) "b2.0.changed"
! 498: [1]=>
! 499: array(3) {
! 500: [0]=>
! 501: int(1)
! 502: [1]=>
! 503: int(1)
! 504: [2]=>
! 505: *RECURSION*
! 506: }
! 507: }
! 508: }
! 509: array(3) {
! 510: [0]=>
! 511: string(10) "b0.changed"
! 512: [1]=>
! 513: string(10) "b1.changed"
! 514: [2]=>
! 515: &array(2) {
! 516: [0]=>
! 517: string(12) "b2.0.changed"
! 518: [1]=>
! 519: string(12) "b2.1.changed"
! 520: }
! 521: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>