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