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>