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