1--TEST-- 2Test array_rand() function : usage variations - unexpected values for 'num_req' parameter 3--SKIPIF-- 4<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only"); 5--FILE-- 6<?php 7/* Prototype : mixed array_rand(array input [, int num_req]) 8 * Description: Return key/keys for random entry/entries in the array 9 * Source code: ext/standard/array.c 10*/ 11 12/* 13* Test array_rand() with different types of values other than int passed to 'num_req' argument 14* to see that function works with unexpeced data and generates warning message as required. 15*/ 16 17echo "*** Testing array_rand() : unexpected values for 'num_req' parameter ***\n"; 18 19// Initialise function arguments 20$input = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13); 21 22//get an unset variable 23$unset_var = 10; 24unset ($unset_var); 25 26//define a class 27class test 28{ 29 var $t = 10; 30 function __toString() 31 { 32 return "3object"; 33 } 34} 35 36//array of values to iterate over 37$values = array( 38 39 // int data 40/*1*/ 0, 41 1, 42 12345, 43 -2345, 44 45 // float data 46/*5*/ 10.5, 47 -10.5, 48 12.3456789000e10, 49 12.3456789000E-10, 50 .5, 51 52 // null data 53/*10*/ NULL, 54 null, 55 56 // boolean data 57/*12*/ true, 58 false, 59 TRUE, 60 FALSE, 61 62 // empty data 63/*16*/ "", 64 '', 65 66 // string data 67/*18*/ "string", 68 'string', 69 70 // object data 71/*20*/ new test(), 72 73 // undefined data 74/*21*/ @$undefined_var, 75 76 // unset data 77/*22*/ @$unset_var, 78); 79 80 81// loop through each element of the array for different values for 'num_req' argument 82$count = 1; 83foreach($values as $value) { 84 echo "\n-- Iteration $count --\n"; 85 var_dump( array_rand($input,$value) ); 86 $count++; 87}; 88 89echo "Done"; 90?> 91--EXPECTF-- 92*** Testing array_rand() : unexpected values for 'num_req' parameter *** 93 94-- Iteration 1 -- 95 96Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 97NULL 98 99-- Iteration 2 -- 100int(%d) 101 102-- Iteration 3 -- 103 104Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 105NULL 106 107-- Iteration 4 -- 108 109Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 110NULL 111 112-- Iteration 5 -- 113array(10) { 114 [0]=> 115 int(%d) 116 [1]=> 117 int(%d) 118 [2]=> 119 int(%d) 120 [3]=> 121 int(%d) 122 [4]=> 123 int(%d) 124 [5]=> 125 int(%d) 126 [6]=> 127 int(%d) 128 [7]=> 129 int(%d) 130 [8]=> 131 int(%d) 132 [9]=> 133 int(%d) 134} 135 136-- Iteration 6 -- 137 138Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 139NULL 140 141-- Iteration 7 -- 142 143Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 144NULL 145 146-- Iteration 8 -- 147 148Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 149NULL 150 151-- Iteration 9 -- 152 153Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 154NULL 155 156-- Iteration 10 -- 157 158Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 159NULL 160 161-- Iteration 11 -- 162 163Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 164NULL 165 166-- Iteration 12 -- 167int(%d) 168 169-- Iteration 13 -- 170 171Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 172NULL 173 174-- Iteration 14 -- 175int(%d) 176 177-- Iteration 15 -- 178 179Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 180NULL 181 182-- Iteration 16 -- 183 184Warning: array_rand() expects parameter 2 to be integer, string given in %s on line %d 185NULL 186 187-- Iteration 17 -- 188 189Warning: array_rand() expects parameter 2 to be integer, string given in %s on line %d 190NULL 191 192-- Iteration 18 -- 193 194Warning: array_rand() expects parameter 2 to be integer, string given in %s on line %d 195NULL 196 197-- Iteration 19 -- 198 199Warning: array_rand() expects parameter 2 to be integer, string given in %s on line %d 200NULL 201 202-- Iteration 20 -- 203 204Warning: array_rand() expects parameter 2 to be integer, object given in %s on line %d 205NULL 206 207-- Iteration 21 -- 208 209Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 210NULL 211 212-- Iteration 22 -- 213 214Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in %s on line %d 215NULL 216Done 217 218