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>