Annotation of embedaddon/php/ext/standard/tests/array/each.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Test each() function   
        !             3: --FILE--
        !             4: <?php
        !             5: /* Return the current key and value pair from an array 
        !             6:    and advance the array cursor */
        !             7: 
        !             8: echo "*** Testing each() : basic functionality ***\n";
        !             9: $arrays = array (
        !            10:            array(0),
        !            11:            array(1),
        !            12:            array(-1),
        !            13:            array(1, 2, 3, 4, 5),
        !            14:            array(-1, -2, -3, 6, 7, 8),
        !            15:            array("a", "ab", "abc", "abcd"),
        !            16:            array("1" => "one", "2" => "two", "3" => "three", "4" => "four"),
        !            17:            array("one" => 1, "two" => 2, 3 => "three", 4 => 4, "" => 5, 
        !            18:                  "  " => 6, "\x00" => "\x000", "\0" => "\0", "" => "",
        !            19:                  TRUE => TRUE, FALSE => FALSE, NULL => NULL
        !            20:                 ),
        !            21:            array("1.5" => "one.5", "-2.0" => "negative2.0"),
        !            22:            array(-5 => "negative5", -.05  => "negative.05")
        !            23:          );
        !            24: 
        !            25: /* loop through to check working of each() on different arrays */
        !            26: $i = 0;
        !            27: while( list( $key, $sub_array) = each($arrays) )  {
        !            28:   echo "-- Iteration $i --\n";
        !            29:   $c = count ($sub_array);
        !            30:   $c++;                // increment by one to create the situation 
        !            31:                        // of accessing beyond array size
        !            32:   while ( $c ) {
        !            33:     var_dump( each($sub_array) );
        !            34:     $c --;
        !            35:   }
        !            36:   /* assignment of an array to another variable resets the internal 
        !            37:      pointer of the array. check this and ensure that each returns 
        !            38:      the first element after the assignment */
        !            39:   $new_array = $sub_array;
        !            40:   var_dump( each($sub_array) );
        !            41:   echo "\n";
        !            42:   $i++;
        !            43: }
        !            44: 
        !            45: echo "\n*** Testing each() : possible variations ***\n";
        !            46: echo "-- Testing each() with reset() function --\n";
        !            47: /* reset the $arrays and use each to get the first element */ 
        !            48: var_dump( reset($arrays) );
        !            49: var_dump( each($arrays) );  // first element
        !            50: list($key, $sub_array) = each($arrays);  // now second element
        !            51: var_dump( each($sub_array) );
        !            52: 
        !            53: 
        !            54: echo "-- Testing each() with resources --\n";
        !            55: $fp = fopen(__FILE__, "r");
        !            56: $dfp = opendir(".");
        !            57: 
        !            58: $resources = array (
        !            59:   "file" => $fp,
        !            60:   "dir" => $dfp
        !            61: );
        !            62: 
        !            63: for( $i = 0; $i < count($resources); $i++) {
        !            64:   var_dump( each($resources) );
        !            65: }
        !            66: 
        !            67: echo "-- Testing each with objects --\n";
        !            68: 
        !            69: class each_class {
        !            70:   private $var_private = 100;
        !            71:   protected $var_protected = "string";
        !            72:   public $var_public = array(0, 1, TRUE, NULL);
        !            73: }
        !            74: $each_obj = new each_class();
        !            75: for( $i = 0; $i <= 2; $i++ ) {
        !            76:   var_dump( each($each_obj) );
        !            77: }
        !            78: 
        !            79: echo "-- Testing each() with null array --\n";
        !            80: $null_array = array();
        !            81: var_dump( each($null_array) );
        !            82: 
        !            83: 
        !            84: echo "\n*** Testing error conditions ***\n";
        !            85: 
        !            86: /* unexpected number of arguments */
        !            87: var_dump( each() );  // args = 0
        !            88: var_dump( each($null_array, $null_array) );  // args > expected
        !            89: 
        !            90: /* unexpected argument type */
        !            91: $var=1;
        !            92: $str ="string";
        !            93: $fl = "15.5";
        !            94: var_dump( each($var) );
        !            95: var_dump( each($str) );
        !            96: var_dump( each($fl) );
        !            97: 
        !            98: // close resourses used
        !            99: fclose($fp);
        !           100: closedir($dfp);
        !           101: 
        !           102: echo "Done\n";
        !           103: ?>
        !           104: 
        !           105: --EXPECTF--    
        !           106: *** Testing each() : basic functionality ***
        !           107: -- Iteration 0 --
        !           108: array(4) {
        !           109:   [1]=>
        !           110:   int(0)
        !           111:   ["value"]=>
        !           112:   int(0)
        !           113:   [0]=>
        !           114:   int(0)
        !           115:   ["key"]=>
        !           116:   int(0)
        !           117: }
        !           118: bool(false)
        !           119: array(4) {
        !           120:   [1]=>
        !           121:   int(0)
        !           122:   ["value"]=>
        !           123:   int(0)
        !           124:   [0]=>
        !           125:   int(0)
        !           126:   ["key"]=>
        !           127:   int(0)
        !           128: }
        !           129: 
        !           130: -- Iteration 1 --
        !           131: array(4) {
        !           132:   [1]=>
        !           133:   int(1)
        !           134:   ["value"]=>
        !           135:   int(1)
        !           136:   [0]=>
        !           137:   int(0)
        !           138:   ["key"]=>
        !           139:   int(0)
        !           140: }
        !           141: bool(false)
        !           142: array(4) {
        !           143:   [1]=>
        !           144:   int(1)
        !           145:   ["value"]=>
        !           146:   int(1)
        !           147:   [0]=>
        !           148:   int(0)
        !           149:   ["key"]=>
        !           150:   int(0)
        !           151: }
        !           152: 
        !           153: -- Iteration 2 --
        !           154: array(4) {
        !           155:   [1]=>
        !           156:   int(-1)
        !           157:   ["value"]=>
        !           158:   int(-1)
        !           159:   [0]=>
        !           160:   int(0)
        !           161:   ["key"]=>
        !           162:   int(0)
        !           163: }
        !           164: bool(false)
        !           165: array(4) {
        !           166:   [1]=>
        !           167:   int(-1)
        !           168:   ["value"]=>
        !           169:   int(-1)
        !           170:   [0]=>
        !           171:   int(0)
        !           172:   ["key"]=>
        !           173:   int(0)
        !           174: }
        !           175: 
        !           176: -- Iteration 3 --
        !           177: array(4) {
        !           178:   [1]=>
        !           179:   int(1)
        !           180:   ["value"]=>
        !           181:   int(1)
        !           182:   [0]=>
        !           183:   int(0)
        !           184:   ["key"]=>
        !           185:   int(0)
        !           186: }
        !           187: array(4) {
        !           188:   [1]=>
        !           189:   int(2)
        !           190:   ["value"]=>
        !           191:   int(2)
        !           192:   [0]=>
        !           193:   int(1)
        !           194:   ["key"]=>
        !           195:   int(1)
        !           196: }
        !           197: array(4) {
        !           198:   [1]=>
        !           199:   int(3)
        !           200:   ["value"]=>
        !           201:   int(3)
        !           202:   [0]=>
        !           203:   int(2)
        !           204:   ["key"]=>
        !           205:   int(2)
        !           206: }
        !           207: array(4) {
        !           208:   [1]=>
        !           209:   int(4)
        !           210:   ["value"]=>
        !           211:   int(4)
        !           212:   [0]=>
        !           213:   int(3)
        !           214:   ["key"]=>
        !           215:   int(3)
        !           216: }
        !           217: array(4) {
        !           218:   [1]=>
        !           219:   int(5)
        !           220:   ["value"]=>
        !           221:   int(5)
        !           222:   [0]=>
        !           223:   int(4)
        !           224:   ["key"]=>
        !           225:   int(4)
        !           226: }
        !           227: bool(false)
        !           228: array(4) {
        !           229:   [1]=>
        !           230:   int(1)
        !           231:   ["value"]=>
        !           232:   int(1)
        !           233:   [0]=>
        !           234:   int(0)
        !           235:   ["key"]=>
        !           236:   int(0)
        !           237: }
        !           238: 
        !           239: -- Iteration 4 --
        !           240: array(4) {
        !           241:   [1]=>
        !           242:   int(-1)
        !           243:   ["value"]=>
        !           244:   int(-1)
        !           245:   [0]=>
        !           246:   int(0)
        !           247:   ["key"]=>
        !           248:   int(0)
        !           249: }
        !           250: array(4) {
        !           251:   [1]=>
        !           252:   int(-2)
        !           253:   ["value"]=>
        !           254:   int(-2)
        !           255:   [0]=>
        !           256:   int(1)
        !           257:   ["key"]=>
        !           258:   int(1)
        !           259: }
        !           260: array(4) {
        !           261:   [1]=>
        !           262:   int(-3)
        !           263:   ["value"]=>
        !           264:   int(-3)
        !           265:   [0]=>
        !           266:   int(2)
        !           267:   ["key"]=>
        !           268:   int(2)
        !           269: }
        !           270: array(4) {
        !           271:   [1]=>
        !           272:   int(6)
        !           273:   ["value"]=>
        !           274:   int(6)
        !           275:   [0]=>
        !           276:   int(3)
        !           277:   ["key"]=>
        !           278:   int(3)
        !           279: }
        !           280: array(4) {
        !           281:   [1]=>
        !           282:   int(7)
        !           283:   ["value"]=>
        !           284:   int(7)
        !           285:   [0]=>
        !           286:   int(4)
        !           287:   ["key"]=>
        !           288:   int(4)
        !           289: }
        !           290: array(4) {
        !           291:   [1]=>
        !           292:   int(8)
        !           293:   ["value"]=>
        !           294:   int(8)
        !           295:   [0]=>
        !           296:   int(5)
        !           297:   ["key"]=>
        !           298:   int(5)
        !           299: }
        !           300: bool(false)
        !           301: array(4) {
        !           302:   [1]=>
        !           303:   int(-1)
        !           304:   ["value"]=>
        !           305:   int(-1)
        !           306:   [0]=>
        !           307:   int(0)
        !           308:   ["key"]=>
        !           309:   int(0)
        !           310: }
        !           311: 
        !           312: -- Iteration 5 --
        !           313: array(4) {
        !           314:   [1]=>
        !           315:   string(1) "a"
        !           316:   ["value"]=>
        !           317:   string(1) "a"
        !           318:   [0]=>
        !           319:   int(0)
        !           320:   ["key"]=>
        !           321:   int(0)
        !           322: }
        !           323: array(4) {
        !           324:   [1]=>
        !           325:   string(2) "ab"
        !           326:   ["value"]=>
        !           327:   string(2) "ab"
        !           328:   [0]=>
        !           329:   int(1)
        !           330:   ["key"]=>
        !           331:   int(1)
        !           332: }
        !           333: array(4) {
        !           334:   [1]=>
        !           335:   string(3) "abc"
        !           336:   ["value"]=>
        !           337:   string(3) "abc"
        !           338:   [0]=>
        !           339:   int(2)
        !           340:   ["key"]=>
        !           341:   int(2)
        !           342: }
        !           343: array(4) {
        !           344:   [1]=>
        !           345:   string(4) "abcd"
        !           346:   ["value"]=>
        !           347:   string(4) "abcd"
        !           348:   [0]=>
        !           349:   int(3)
        !           350:   ["key"]=>
        !           351:   int(3)
        !           352: }
        !           353: bool(false)
        !           354: array(4) {
        !           355:   [1]=>
        !           356:   string(1) "a"
        !           357:   ["value"]=>
        !           358:   string(1) "a"
        !           359:   [0]=>
        !           360:   int(0)
        !           361:   ["key"]=>
        !           362:   int(0)
        !           363: }
        !           364: 
        !           365: -- Iteration 6 --
        !           366: array(4) {
        !           367:   [1]=>
        !           368:   string(3) "one"
        !           369:   ["value"]=>
        !           370:   string(3) "one"
        !           371:   [0]=>
        !           372:   int(1)
        !           373:   ["key"]=>
        !           374:   int(1)
        !           375: }
        !           376: array(4) {
        !           377:   [1]=>
        !           378:   string(3) "two"
        !           379:   ["value"]=>
        !           380:   string(3) "two"
        !           381:   [0]=>
        !           382:   int(2)
        !           383:   ["key"]=>
        !           384:   int(2)
        !           385: }
        !           386: array(4) {
        !           387:   [1]=>
        !           388:   string(5) "three"
        !           389:   ["value"]=>
        !           390:   string(5) "three"
        !           391:   [0]=>
        !           392:   int(3)
        !           393:   ["key"]=>
        !           394:   int(3)
        !           395: }
        !           396: array(4) {
        !           397:   [1]=>
        !           398:   string(4) "four"
        !           399:   ["value"]=>
        !           400:   string(4) "four"
        !           401:   [0]=>
        !           402:   int(4)
        !           403:   ["key"]=>
        !           404:   int(4)
        !           405: }
        !           406: bool(false)
        !           407: array(4) {
        !           408:   [1]=>
        !           409:   string(3) "one"
        !           410:   ["value"]=>
        !           411:   string(3) "one"
        !           412:   [0]=>
        !           413:   int(1)
        !           414:   ["key"]=>
        !           415:   int(1)
        !           416: }
        !           417: 
        !           418: -- Iteration 7 --
        !           419: array(4) {
        !           420:   [1]=>
        !           421:   int(1)
        !           422:   ["value"]=>
        !           423:   int(1)
        !           424:   [0]=>
        !           425:   string(3) "one"
        !           426:   ["key"]=>
        !           427:   string(3) "one"
        !           428: }
        !           429: array(4) {
        !           430:   [1]=>
        !           431:   int(2)
        !           432:   ["value"]=>
        !           433:   int(2)
        !           434:   [0]=>
        !           435:   string(3) "two"
        !           436:   ["key"]=>
        !           437:   string(3) "two"
        !           438: }
        !           439: array(4) {
        !           440:   [1]=>
        !           441:   string(5) "three"
        !           442:   ["value"]=>
        !           443:   string(5) "three"
        !           444:   [0]=>
        !           445:   int(3)
        !           446:   ["key"]=>
        !           447:   int(3)
        !           448: }
        !           449: array(4) {
        !           450:   [1]=>
        !           451:   int(4)
        !           452:   ["value"]=>
        !           453:   int(4)
        !           454:   [0]=>
        !           455:   int(4)
        !           456:   ["key"]=>
        !           457:   int(4)
        !           458: }
        !           459: array(4) {
        !           460:   [1]=>
        !           461:   NULL
        !           462:   ["value"]=>
        !           463:   NULL
        !           464:   [0]=>
        !           465:   string(0) ""
        !           466:   ["key"]=>
        !           467:   string(0) ""
        !           468: }
        !           469: array(4) {
        !           470:   [1]=>
        !           471:   int(6)
        !           472:   ["value"]=>
        !           473:   int(6)
        !           474:   [0]=>
        !           475:   string(2) "  "
        !           476:   ["key"]=>
        !           477:   string(2) "  "
        !           478: }
        !           479: array(4) {
        !           480:   [1]=>
        !           481:   string(1) ""
        !           482:   ["value"]=>
        !           483:   string(1) ""
        !           484:   [0]=>
        !           485:   string(1) ""
        !           486:   ["key"]=>
        !           487:   string(1) ""
        !           488: }
        !           489: array(4) {
        !           490:   [1]=>
        !           491:   bool(true)
        !           492:   ["value"]=>
        !           493:   bool(true)
        !           494:   [0]=>
        !           495:   int(1)
        !           496:   ["key"]=>
        !           497:   int(1)
        !           498: }
        !           499: array(4) {
        !           500:   [1]=>
        !           501:   bool(false)
        !           502:   ["value"]=>
        !           503:   bool(false)
        !           504:   [0]=>
        !           505:   int(0)
        !           506:   ["key"]=>
        !           507:   int(0)
        !           508: }
        !           509: bool(false)
        !           510: array(4) {
        !           511:   [1]=>
        !           512:   int(1)
        !           513:   ["value"]=>
        !           514:   int(1)
        !           515:   [0]=>
        !           516:   string(3) "one"
        !           517:   ["key"]=>
        !           518:   string(3) "one"
        !           519: }
        !           520: 
        !           521: -- Iteration 8 --
        !           522: array(4) {
        !           523:   [1]=>
        !           524:   string(5) "one.5"
        !           525:   ["value"]=>
        !           526:   string(5) "one.5"
        !           527:   [0]=>
        !           528:   string(3) "1.5"
        !           529:   ["key"]=>
        !           530:   string(3) "1.5"
        !           531: }
        !           532: array(4) {
        !           533:   [1]=>
        !           534:   string(11) "negative2.0"
        !           535:   ["value"]=>
        !           536:   string(11) "negative2.0"
        !           537:   [0]=>
        !           538:   string(4) "-2.0"
        !           539:   ["key"]=>
        !           540:   string(4) "-2.0"
        !           541: }
        !           542: bool(false)
        !           543: array(4) {
        !           544:   [1]=>
        !           545:   string(5) "one.5"
        !           546:   ["value"]=>
        !           547:   string(5) "one.5"
        !           548:   [0]=>
        !           549:   string(3) "1.5"
        !           550:   ["key"]=>
        !           551:   string(3) "1.5"
        !           552: }
        !           553: 
        !           554: -- Iteration 9 --
        !           555: array(4) {
        !           556:   [1]=>
        !           557:   string(9) "negative5"
        !           558:   ["value"]=>
        !           559:   string(9) "negative5"
        !           560:   [0]=>
        !           561:   int(-5)
        !           562:   ["key"]=>
        !           563:   int(-5)
        !           564: }
        !           565: array(4) {
        !           566:   [1]=>
        !           567:   string(11) "negative.05"
        !           568:   ["value"]=>
        !           569:   string(11) "negative.05"
        !           570:   [0]=>
        !           571:   int(0)
        !           572:   ["key"]=>
        !           573:   int(0)
        !           574: }
        !           575: bool(false)
        !           576: array(4) {
        !           577:   [1]=>
        !           578:   string(9) "negative5"
        !           579:   ["value"]=>
        !           580:   string(9) "negative5"
        !           581:   [0]=>
        !           582:   int(-5)
        !           583:   ["key"]=>
        !           584:   int(-5)
        !           585: }
        !           586: 
        !           587: 
        !           588: *** Testing each() : possible variations ***
        !           589: -- Testing each() with reset() function --
        !           590: array(1) {
        !           591:   [0]=>
        !           592:   int(0)
        !           593: }
        !           594: array(4) {
        !           595:   [1]=>
        !           596:   array(1) {
        !           597:     [0]=>
        !           598:     int(0)
        !           599:   }
        !           600:   ["value"]=>
        !           601:   array(1) {
        !           602:     [0]=>
        !           603:     int(0)
        !           604:   }
        !           605:   [0]=>
        !           606:   int(0)
        !           607:   ["key"]=>
        !           608:   int(0)
        !           609: }
        !           610: array(4) {
        !           611:   [1]=>
        !           612:   int(1)
        !           613:   ["value"]=>
        !           614:   int(1)
        !           615:   [0]=>
        !           616:   int(0)
        !           617:   ["key"]=>
        !           618:   int(0)
        !           619: }
        !           620: -- Testing each() with resources --
        !           621: array(4) {
        !           622:   [1]=>
        !           623:   resource(5) of type (stream)
        !           624:   ["value"]=>
        !           625:   resource(5) of type (stream)
        !           626:   [0]=>
        !           627:   string(4) "file"
        !           628:   ["key"]=>
        !           629:   string(4) "file"
        !           630: }
        !           631: array(4) {
        !           632:   [1]=>
        !           633:   resource(6) of type (stream)
        !           634:   ["value"]=>
        !           635:   resource(6) of type (stream)
        !           636:   [0]=>
        !           637:   string(3) "dir"
        !           638:   ["key"]=>
        !           639:   string(3) "dir"
        !           640: }
        !           641: -- Testing each with objects --
        !           642: array(4) {
        !           643:   [1]=>
        !           644:   int(100)
        !           645:   ["value"]=>
        !           646:   int(100)
        !           647:   [0]=>
        !           648:   string(23) "each_classvar_private"
        !           649:   ["key"]=>
        !           650:   string(23) "each_classvar_private"
        !           651: }
        !           652: array(4) {
        !           653:   [1]=>
        !           654:   string(6) "string"
        !           655:   ["value"]=>
        !           656:   string(6) "string"
        !           657:   [0]=>
        !           658:   string(16) "*var_protected"
        !           659:   ["key"]=>
        !           660:   string(16) "*var_protected"
        !           661: }
        !           662: array(4) {
        !           663:   [1]=>
        !           664:   array(4) {
        !           665:     [0]=>
        !           666:     int(0)
        !           667:     [1]=>
        !           668:     int(1)
        !           669:     [2]=>
        !           670:     bool(true)
        !           671:     [3]=>
        !           672:     NULL
        !           673:   }
        !           674:   ["value"]=>
        !           675:   array(4) {
        !           676:     [0]=>
        !           677:     int(0)
        !           678:     [1]=>
        !           679:     int(1)
        !           680:     [2]=>
        !           681:     bool(true)
        !           682:     [3]=>
        !           683:     NULL
        !           684:   }
        !           685:   [0]=>
        !           686:   string(10) "var_public"
        !           687:   ["key"]=>
        !           688:   string(10) "var_public"
        !           689: }
        !           690: -- Testing each() with null array --
        !           691: bool(false)
        !           692: 
        !           693: *** Testing error conditions ***
        !           694: 
        !           695: Warning: each() expects exactly 1 parameter, 0 given in %s on line %d
        !           696: NULL
        !           697: 
        !           698: Warning: each() expects exactly 1 parameter, 2 given in %s on line %d
        !           699: NULL
        !           700: 
        !           701: Warning: Variable passed to each() is not an array or object in %s on line %d
        !           702: NULL
        !           703: 
        !           704: Warning: Variable passed to each() is not an array or object in %s on line %d
        !           705: NULL
        !           706: 
        !           707: Warning: Variable passed to each() is not an array or object in %s on line %d
        !           708: NULL
        !           709: Done

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>