Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_arrays_004.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: serialization: arrays with references to the containing array
                      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--- 1 refs container:\n";
                     32: $a = array();
                     33: $a[0] = &$a;
                     34: $a[1] = 1;
                     35: $a[2] = 1;
                     36: check($a);
                     37: 
                     38: echo "\n\n--- 1,2 ref container:\n";
                     39: $a = array();
                     40: $a[0] = &$a;
                     41: $a[1] = &$a;
                     42: $a[2] = 1;
                     43: check($a);
                     44: 
                     45: echo "\n\n--- 1,2,3 ref container:\n";
                     46: $a = array();
                     47: $a[0] = &$a;
                     48: $a[1] = &$a;
                     49: $a[2] = &$a;
                     50: check($a);
                     51: 
                     52: echo "Done";
                     53: ?>
                     54: --EXPECTF--
                     55: --- 1 refs container:
                     56: array(3) {
                     57:   [0]=>
                     58:   &array(3) {
                     59:     [0]=>
                     60:     *RECURSION*
                     61:     [1]=>
                     62:     int(1)
                     63:     [2]=>
                     64:     int(1)
                     65:   }
                     66:   [1]=>
                     67:   int(1)
                     68:   [2]=>
                     69:   int(1)
                     70: }
                     71: string(56) "a:3:{i:0;a:3:{i:0;R:2;i:1;i:1;i:2;i:1;}i:1;i:1;i:2;i:1;}"
                     72: array(3) {
                     73:   [0]=>
                     74:   &array(3) {
                     75:     [0]=>
                     76:     *RECURSION*
                     77:     [1]=>
                     78:     int(1)
                     79:     [2]=>
                     80:     int(1)
                     81:   }
                     82:   [1]=>
                     83:   int(1)
                     84:   [2]=>
                     85:   int(1)
                     86: }
                     87: array(3) {
                     88:   [0]=>
                     89:   string(10) "b0.changed"
                     90:   [1]=>
                     91:   int(1)
                     92:   [2]=>
                     93:   int(1)
                     94: }
                     95: array(3) {
                     96:   [0]=>
                     97:   string(10) "b0.changed"
                     98:   [1]=>
                     99:   string(10) "b1.changed"
                    100:   [2]=>
                    101:   int(1)
                    102: }
                    103: array(3) {
                    104:   [0]=>
                    105:   string(10) "b0.changed"
                    106:   [1]=>
                    107:   string(10) "b1.changed"
                    108:   [2]=>
                    109:   string(10) "b2.changed"
                    110: }
                    111: 
                    112: 
                    113: --- 1,2 ref container:
                    114: array(3) {
                    115:   [0]=>
                    116:   &array(3) {
                    117:     [0]=>
                    118:     *RECURSION*
                    119:     [1]=>
                    120:     *RECURSION*
                    121:     [2]=>
                    122:     int(1)
                    123:   }
                    124:   [1]=>
                    125:   &array(3) {
                    126:     [0]=>
                    127:     *RECURSION*
                    128:     [1]=>
                    129:     *RECURSION*
                    130:     [2]=>
                    131:     int(1)
                    132:   }
                    133:   [2]=>
                    134:   int(1)
                    135: }
                    136: string(56) "a:3:{i:0;a:3:{i:0;R:2;i:1;R:2;i:2;i:1;}i:1;R:2;i:2;i:1;}"
                    137: array(3) {
                    138:   [0]=>
                    139:   &array(3) {
                    140:     [0]=>
                    141:     *RECURSION*
                    142:     [1]=>
                    143:     *RECURSION*
                    144:     [2]=>
                    145:     int(1)
                    146:   }
                    147:   [1]=>
                    148:   &array(3) {
                    149:     [0]=>
                    150:     *RECURSION*
                    151:     [1]=>
                    152:     *RECURSION*
                    153:     [2]=>
                    154:     int(1)
                    155:   }
                    156:   [2]=>
                    157:   int(1)
                    158: }
                    159: array(3) {
                    160:   [0]=>
                    161:   &string(10) "b0.changed"
                    162:   [1]=>
                    163:   &string(10) "b0.changed"
                    164:   [2]=>
                    165:   int(1)
                    166: }
                    167: array(3) {
                    168:   [0]=>
                    169:   &string(10) "b1.changed"
                    170:   [1]=>
                    171:   &string(10) "b1.changed"
                    172:   [2]=>
                    173:   int(1)
                    174: }
                    175: array(3) {
                    176:   [0]=>
                    177:   &string(10) "b1.changed"
                    178:   [1]=>
                    179:   &string(10) "b1.changed"
                    180:   [2]=>
                    181:   string(10) "b2.changed"
                    182: }
                    183: 
                    184: 
                    185: --- 1,2,3 ref container:
                    186: array(3) {
                    187:   [0]=>
                    188:   &array(3) {
                    189:     [0]=>
                    190:     *RECURSION*
                    191:     [1]=>
                    192:     *RECURSION*
                    193:     [2]=>
                    194:     *RECURSION*
                    195:   }
                    196:   [1]=>
                    197:   &array(3) {
                    198:     [0]=>
                    199:     *RECURSION*
                    200:     [1]=>
                    201:     *RECURSION*
                    202:     [2]=>
                    203:     *RECURSION*
                    204:   }
                    205:   [2]=>
                    206:   &array(3) {
                    207:     [0]=>
                    208:     *RECURSION*
                    209:     [1]=>
                    210:     *RECURSION*
                    211:     [2]=>
                    212:     *RECURSION*
                    213:   }
                    214: }
                    215: string(56) "a:3:{i:0;a:3:{i:0;R:2;i:1;R:2;i:2;R:2;}i:1;R:2;i:2;R:2;}"
                    216: array(3) {
                    217:   [0]=>
                    218:   &array(3) {
                    219:     [0]=>
                    220:     *RECURSION*
                    221:     [1]=>
                    222:     *RECURSION*
                    223:     [2]=>
                    224:     *RECURSION*
                    225:   }
                    226:   [1]=>
                    227:   &array(3) {
                    228:     [0]=>
                    229:     *RECURSION*
                    230:     [1]=>
                    231:     *RECURSION*
                    232:     [2]=>
                    233:     *RECURSION*
                    234:   }
                    235:   [2]=>
                    236:   &array(3) {
                    237:     [0]=>
                    238:     *RECURSION*
                    239:     [1]=>
                    240:     *RECURSION*
                    241:     [2]=>
                    242:     *RECURSION*
                    243:   }
                    244: }
                    245: array(3) {
                    246:   [0]=>
                    247:   &string(10) "b0.changed"
                    248:   [1]=>
                    249:   &string(10) "b0.changed"
                    250:   [2]=>
                    251:   &string(10) "b0.changed"
                    252: }
                    253: array(3) {
                    254:   [0]=>
                    255:   &string(10) "b1.changed"
                    256:   [1]=>
                    257:   &string(10) "b1.changed"
                    258:   [2]=>
                    259:   &string(10) "b1.changed"
                    260: }
                    261: array(3) {
                    262:   [0]=>
                    263:   &string(10) "b2.changed"
                    264:   [1]=>
                    265:   &string(10) "b2.changed"
                    266:   [2]=>
                    267:   &string(10) "b2.changed"
                    268: }
                    269: Done

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>