Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_arrays_002.phpt, revision 1.1.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>