Annotation of embedaddon/php/ext/standard/tests/array/array_intersect_variation4.phpt, revision 1.1.1.2

1.1       misho       1: --TEST--
                      2: Test array_intersect() function : usage variations - different arrays for 'arr2' argument
                      3: --FILE--
                      4: <?php
                      5: /* Prototype  : array array_intersect(array $arr1, array $arr2 [, array $...])
                      6:  * Description: Returns the entries of arr1 that have values which are present in all the other arguments 
                      7:  * Source code: ext/standard/array.c
                      8: */
                      9: 
                     10: /*
                     11: * Passing different types of arrays to $arr2 argument and testing whether 
                     12: * array_intersect() behaves in expected way with the other arguments passed to the function.  
                     13: * The $arr1 argument is a fixed array.
                     14: */
                     15: 
                     16: echo "*** Testing array_intersect() : Passing different types of arrays to \$arr2 argument ***\n";
                     17: 
                     18: /* Different heredoc strings passed as argument to $arr2 */
                     19: // heredoc with blank line
                     20: $blank_line = <<<EOT
                     21: 
                     22: 
                     23: EOT;
                     24: 
                     25: // heredoc with multiline string
                     26: $multiline_string = <<<EOT
                     27: hello world
                     28: The big brown fox jumped over;
                     29: the lazy dog
                     30: This is a double quoted string
                     31: EOT;
                     32: 
1.1.1.2 ! misho      33: // heredoc with different whitespaces
1.1       misho      34: $diff_whitespaces = <<<EOT
                     35: hello\r world\t
                     36: 1111\t\t != 2222\v\v
                     37: heredoc\ndouble quoted string. with\vdifferent\fwhite\vspaces
                     38: EOT;
                     39: 
                     40: // heredoc with quoted strings and numeric values
                     41: $numeric_string = <<<EOT
                     42: 11 < 12. 123 >22
                     43: 'single quoted string'
                     44: "double quoted string"
                     45: 2222 != 1111.\t 0000 = 0000\n
                     46: EOT;
                     47: 
                     48: // array to be passsed to $arr1 argument
                     49: $arr1 = array (
                     50:   1, 1.1, "hello", "one", NULL, 2,
                     51:   'world', true, false, false => 5, 'aaaa\r', "aaaa\r",
                     52:   $numeric_string, $diff_whitespaces,
                     53:   "one" => "ten", 4 => "four", "two" => 2, 2 => "two",
                     54:   '', null => "null", '' => 'emptys'
                     55: );
                     56: 
                     57: // arrays to be passed to $arr2 argument
                     58: $arrays = array (
                     59: /*1*/  array(1, 2), // array with default keys and numeric values
                     60:        array(1.1, 2.2), // array with default keys & float values
                     61:        array(false,true), // array with default keys and boolean values
                     62:        array(), // empty array
                     63: /*5*/  array(NULL), // array with NULL
                     64:        array("a\v\f","aaaa\r","b","b\tbbb","c","\[\]\!\@\#\$\%\^\&\*\(\)\{\}"),  // array with double quoted strings
                     65:        array('a\v\f','aaaa\r','b','b\tbbb','c','\[\]\!\@\#\$\%\^\&\*\(\)\{\}'),  // array with single quoted strings
                     66:        array($blank_line, $multiline_string, $diff_whitespaces, $numeric_string),  // array with heredocs
                     67: 
                     68:        // associative arrays
                     69: /*9*/  array(1 => "one", 2 => "two", 3 => "three"),  // explicit numeric keys, string values
                     70:        array("one" => 1, "two" => 2, "three" => 3 ),  // string keys & numeric values
                     71:        array( 1 => 10, 2 => 20, 4 => 40, 3 => 30),  // explicit numeric keys and numeric values
                     72:        array( "one" => "ten", "two" => "twenty", "three" => "thirty"),  // string key/value
                     73:        array("one" => 1, 2 => "two", 4 => "four"),  //mixed
                     74: 
                     75:        // associative array, containing null/empty/boolean values as key/value
                     76: /*14*/ array(NULL => "NULL", null => "null", "NULL" => NULL, "null" => null),
                     77:        array(true => "true", false => "false", "false" => false, "true" => true),
                     78:        array("" => "emptyd", '' => 'emptys', "emptyd" => "", 'emptys' => ''),
                     79:        array(1 => '', 2 => "", 3 => NULL, 4 => null, 5 => false, 6 => true),
                     80:        array('' => 1, "" => 2, NULL => 3, null => 4, false => 5, true => 6),
                     81: 
                     82:        // array with repetative keys
                     83: /*19*/ array("One" => 1, "two" => 2, "One" => 10, "two" => 20, "three" => 3)
                     84: );
                     85: 
                     86: // loop through each sub-array within $arrrays to check the behavior of array_intersect()
                     87: $iterator = 1;
                     88: foreach($arrays as $arr2) {
                     89:   echo "-- Iteration $iterator --\n";
                     90: 
                     91:   // Calling array_intersect() with default arguments
                     92:   var_dump( array_intersect($arr1, $arr2) );
                     93: 
                     94:   // Calling array_intersect() with more arguments
                     95:   // additional argument passed is the same as $arr1 argument
                     96:   var_dump( array_intersect($arr1, $arr2, $arr1) );
                     97:   $iterator++;
                     98: }
                     99: 
                    100: echo "Done";
                    101: ?>
                    102: --EXPECTF--
                    103: *** Testing array_intersect() : Passing different types of arrays to $arr2 argument ***
                    104: -- Iteration 1 --
                    105: array(3) {
                    106:   [5]=>
                    107:   int(2)
                    108:   [7]=>
                    109:   bool(true)
                    110:   ["two"]=>
                    111:   int(2)
                    112: }
                    113: array(3) {
                    114:   [5]=>
                    115:   int(2)
                    116:   [7]=>
                    117:   bool(true)
                    118:   ["two"]=>
                    119:   int(2)
                    120: }
                    121: -- Iteration 2 --
                    122: array(1) {
                    123:   [1]=>
                    124:   float(1.1)
                    125: }
                    126: array(1) {
                    127:   [1]=>
                    128:   float(1.1)
                    129: }
                    130: -- Iteration 3 --
                    131: array(3) {
                    132:   [7]=>
                    133:   bool(true)
                    134:   [8]=>
                    135:   bool(false)
                    136:   [13]=>
                    137:   string(0) ""
                    138: }
                    139: array(3) {
                    140:   [7]=>
                    141:   bool(true)
                    142:   [8]=>
                    143:   bool(false)
                    144:   [13]=>
                    145:   string(0) ""
                    146: }
                    147: -- Iteration 4 --
                    148: array(0) {
                    149: }
                    150: array(0) {
                    151: }
                    152: -- Iteration 5 --
                    153: array(2) {
                    154:   [8]=>
                    155:   bool(false)
                    156:   [13]=>
                    157:   string(0) ""
                    158: }
                    159: array(2) {
                    160:   [8]=>
                    161:   bool(false)
                    162:   [13]=>
                    163:   string(0) ""
                    164: }
                    165: -- Iteration 6 --
                    166: array(1) {
                    167:   [10]=>
                    168:   string(5) "aaaa
"
                    169: }
                    170: array(1) {
                    171:   [10]=>
                    172:   string(5) "aaaa
"
                    173: }
                    174: -- Iteration 7 --
                    175: array(1) {
                    176:   [9]=>
                    177:   string(6) "aaaa\r"
                    178: }
                    179: array(1) {
                    180:   [9]=>
                    181:   string(6) "aaaa\r"
                    182: }
                    183: -- Iteration 8 --
                    184: array(2) {
                    185:   [11]=>
                    186:   string(90) "11 < 12. 123 >22
                    187: 'single quoted string'
                    188: "double quoted string"
                    189: 2222 != 1111.   0000 = 0000
                    190: "
                    191:   [12]=>
                    192:   string(88) "hello
 world     
                    193: 1111            != 2222
                    194: heredoc
                    195: double quoted string. withdifferentwhitespaces"
                    196: }
                    197: array(2) {
                    198:   [11]=>
                    199:   string(90) "11 < 12. 123 >22
                    200: 'single quoted string'
                    201: "double quoted string"
                    202: 2222 != 1111.   0000 = 0000
                    203: "
                    204:   [12]=>
                    205:   string(88) "hello
 world     
                    206: 1111            != 2222
                    207: heredoc
                    208: double quoted string. withdifferentwhitespaces"
                    209: }
                    210: -- Iteration 9 --
                    211: array(2) {
                    212:   [2]=>
                    213:   string(3) "two"
                    214:   [3]=>
                    215:   string(3) "one"
                    216: }
                    217: array(2) {
                    218:   [2]=>
                    219:   string(3) "two"
                    220:   [3]=>
                    221:   string(3) "one"
                    222: }
                    223: -- Iteration 10 --
                    224: array(3) {
                    225:   [5]=>
                    226:   int(2)
                    227:   [7]=>
                    228:   bool(true)
                    229:   ["two"]=>
                    230:   int(2)
                    231: }
                    232: array(3) {
                    233:   [5]=>
                    234:   int(2)
                    235:   [7]=>
                    236:   bool(true)
                    237:   ["two"]=>
                    238:   int(2)
                    239: }
                    240: -- Iteration 11 --
                    241: array(0) {
                    242: }
                    243: array(0) {
                    244: }
                    245: -- Iteration 12 --
                    246: array(1) {
                    247:   ["one"]=>
                    248:   string(3) "ten"
                    249: }
                    250: array(1) {
                    251:   ["one"]=>
                    252:   string(3) "ten"
                    253: }
                    254: -- Iteration 13 --
                    255: array(3) {
                    256:   [2]=>
                    257:   string(3) "two"
                    258:   [4]=>
                    259:   string(4) "four"
                    260:   [7]=>
                    261:   bool(true)
                    262: }
                    263: array(3) {
                    264:   [2]=>
                    265:   string(3) "two"
                    266:   [4]=>
                    267:   string(4) "four"
                    268:   [7]=>
                    269:   bool(true)
                    270: }
                    271: -- Iteration 14 --
                    272: array(2) {
                    273:   [8]=>
                    274:   bool(false)
                    275:   [13]=>
                    276:   string(0) ""
                    277: }
                    278: array(2) {
                    279:   [8]=>
                    280:   bool(false)
                    281:   [13]=>
                    282:   string(0) ""
                    283: }
                    284: -- Iteration 15 --
                    285: array(3) {
                    286:   [7]=>
                    287:   bool(true)
                    288:   [8]=>
                    289:   bool(false)
                    290:   [13]=>
                    291:   string(0) ""
                    292: }
                    293: array(3) {
                    294:   [7]=>
                    295:   bool(true)
                    296:   [8]=>
                    297:   bool(false)
                    298:   [13]=>
                    299:   string(0) ""
                    300: }
                    301: -- Iteration 16 --
                    302: array(3) {
                    303:   [8]=>
                    304:   bool(false)
                    305:   [13]=>
                    306:   string(0) ""
                    307:   [""]=>
                    308:   string(6) "emptys"
                    309: }
                    310: array(3) {
                    311:   [8]=>
                    312:   bool(false)
                    313:   [13]=>
                    314:   string(0) ""
                    315:   [""]=>
                    316:   string(6) "emptys"
                    317: }
                    318: -- Iteration 17 --
                    319: array(3) {
                    320:   [7]=>
                    321:   bool(true)
                    322:   [8]=>
                    323:   bool(false)
                    324:   [13]=>
                    325:   string(0) ""
                    326: }
                    327: array(3) {
                    328:   [7]=>
                    329:   bool(true)
                    330:   [8]=>
                    331:   bool(false)
                    332:   [13]=>
                    333:   string(0) ""
                    334: }
                    335: -- Iteration 18 --
                    336: array(1) {
                    337:   [0]=>
                    338:   int(5)
                    339: }
                    340: array(1) {
                    341:   [0]=>
                    342:   int(5)
                    343: }
                    344: -- Iteration 19 --
                    345: array(0) {
                    346: }
                    347: array(0) {
                    348: }
                    349: Done

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