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