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