Annotation of embedaddon/php/ext/standard/tests/array/array_rand_variation4.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Test array_rand() function : usage variation - with associative arrays for 'input' parameter 
                      3: --FILE--
                      4: <?php
                      5: /* Prototype  : mixed array_rand(array $input [, int $num_req])
                      6:  * Description: Return key/keys for random entry/entries in the array 
                      7:  * Source code: ext/standard/array.c
                      8: */
                      9: 
                     10: /*
                     11: * Test behaviour of array_rand() function when associative array is passed to
                     12: * the 'input' parameter in the function call
                     13: */
                     14: 
                     15: echo "*** Testing array_rand() : with associative arrays ***\n";
                     16: 
                     17: // initialise associative arrays
                     18: $asso_arrays = array(
                     19:     
                     20:        // array with numeric keys
                     21: /*1*/  array(1 => 'one', 2 => 2, 1234567890 => 'big', -1 => 'negative key',
                     22:              2.3 => 'float key', 0 => "zero key", 0.2 => 'decimal key',
                     23:              2e2 => 'exp key1', -2e3 => 'negative exp key'),
                     24:       
                     25:        // array with string keys
                     26:        array('one' => 1, "two" => 2.0, "three" => 'three',
                     27:              '12twelve' => 12.00, "" => 'empty string', " " => "space key"),
                     28: 
                     29:        // array with hexa values as keys
                     30: /*3*/  array(0xabc => 2748, 0x12f => '303', 0xff => "255", -0xff => "-255"),
                     31: 
                     32:        // array with octal values as keys 
                     33:        array(0123 => 83, 0129 => 10, 010 => "8", -0348 => "-28", 0012 => '10'),
                     34: 
                     35:        // array with bool values as keys
                     36:        array(TRUE => '1', true => true, TrUe => "TRUE",
                     37:              FALSE => '0', false => false, FaLsE => "FALSE"),
                     38: 
                     39:        // array with special chars as keys
                     40: /*6*/  array('##' => "key1", '&$r' => 'key2', '!' => "key3", '<>' =>'key4',
                     41:              "NULL" => 'key5', "\n" => 'newline as key',
                     42:              "\t" => "tab as key", "'" => 'single quote as key',
                     43:              '"' => 'double quote as key', "\0" => "null char as key")
                     44: );
                     45:        
                     46: /* looping to test array_rand() function with different arrays having
                     47:  * different types of keys
                     48: */
                     49: $counter = 1;
                     50: foreach($asso_arrays as $input) {
                     51:   echo "\n-- Iteration $counter --\n";
                     52: 
                     53:   // with default argument
                     54:   echo"\nWith default argument\n";
                     55:   var_dump( array_rand($input) );
                     56: 
                     57:   // with default and optional arguments
                     58:   echo"\nWith num_req = 1\n";
                     59:   var_dump( array_rand($input, 1) );  // with $num_req=1
                     60:   echo"\nWith num_req = 2\n";
                     61:   var_dump( array_rand($input, 2) );  // with $num_req=2
                     62:  
                     63:   $counter++;
                     64: }  // end of for loop
                     65:  
                     66: 
                     67: echo "Done";
                     68: ?>
                     69: --EXPECTREGEX--
                     70: \*\*\* Testing array_rand\(\) : with associative arrays \*\*\*
                     71: 
                     72: -- Iteration 1 --
                     73: 
                     74: With default argument
                     75: int\([012-][12.e]*[23e]*[34]*[5]*[6]*[7]*[8]*[9]*[0]*\)
                     76: 
                     77: With num_req = 1
                     78: int\([012-][12.e]*[23e]*[34]*[5]*[6]*[7]*[8]*[9]*[0]*\)
                     79: 
                     80: With num_req = 2
                     81: array\(2\) {
                     82:   \[0\]=>
                     83:   int\([012-][12.e]*[23e]*[34]*[5]*[6]*[7]*[8]*[9]*[0]*\)
                     84:   \[1\]=>
                     85:   int\([012-][12.e]*[23e]*[34]*[5]*[6]*[7]*[8]*[9]*[0]*\)
                     86: }
                     87: 
                     88: -- Iteration 2 --
                     89: 
                     90: With default argument
                     91: string\([0-9]*\) "[ot1 ]*[hnw2]*[eort]*[ew]*[e]*[l]*[v]*[e]*"
                     92: 
                     93: With num_req = 1
                     94: string\([0-9]*\) "[ot1 ]*[hnw2]*[eort]*[ew]*[e]*[l]*[v]*[e]*"
                     95: 
                     96: With num_req = 2
                     97: array\(2\) {
                     98:   \[0\]=>
                     99:   string\([0-9]*\) "[ot1 ]*[hnw2]*[eort]*[ew]*[e]*[l]*[v]*[e]*"
                    100:   \[1\]=>
                    101:   string\([0-9]*\) "[ot1 ]*[hnw2]*[eort]*[ew]*[e]*[l]*[v]*[e]*"
                    102: }
                    103: 
                    104: -- Iteration 3 --
                    105: 
                    106: With default argument
                    107: int\([23-]*[2570]*[345]*[58]*\)
                    108: 
                    109: With num_req = 1
                    110: int\([23-]*[2570]*[345]*[58]*\)
                    111: 
                    112: With num_req = 2
                    113: array\(2\) {
                    114:   \[0\]=>
                    115:   int\([23-]*[2570]*[345]*[58]*\)
                    116:   \[1\]=>
                    117:   int\([23-]*[2570]*[345]*[58]*\)
                    118: }
                    119: 
                    120: -- Iteration 4 --
                    121: 
                    122: With default argument
                    123: int\([18-]*[023]*[8]*\)
                    124: 
                    125: With num_req = 1
                    126: int\([18-]*[023]*[8]*\)
                    127: 
                    128: With num_req = 2
                    129: array\(2\) {
                    130:   \[0\]=>
                    131:   int\([18-]*[023]*[8]*\)
                    132:   \[1\]=>
                    133:   int\([18-]*[023]*[8]*\)
                    134: }
                    135: 
                    136: -- Iteration 5 --
                    137: 
                    138: With default argument
                    139: int\([01]\)
                    140: 
                    141: With num_req = 1
                    142: int\([01]\)
                    143: 
                    144: With num_req = 2
                    145: array\(2\) {
                    146:   \[0\]=>
                    147:   int\([01]\)
                    148:   \[1\]=>
                    149:   int\([01]\)
                    150: }
                    151: 
                    152: -- Iteration 6 --
                    153: 
                    154: With default argument
                    155: string\([0-9]*\) "[#&!N  <\n\t'"\0]*[U#$>]*[rL]*[L]*"
                    156: 
                    157: With num_req = 1
                    158: string\([0-9]*\) "[#&!N  <\n\t'"\0]*[U#$>]*[rL]*[L]*"
                    159: 
                    160: With num_req = 2
                    161: array\(2\) {
                    162:   \[0\]=>
                    163:   string\([0-9]*\) "[#&!N  <\n\t'"\0]*[U#$>]*[rL]*[L]*"
                    164:   \[1\]=>
                    165:   string\([0-9]*\) "[#&!N  <\n\t'"\0]*[U#$>]*[rL]*[L]*"
                    166: }
                    167: Done
                    168: 

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