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