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>