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

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

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