php-src/ext/standard/tests/array/array_rand_variation4.phpt
Jani Taskinen a541bb8078 - Fix tests
- Update README.PARAMETER_PARSING_API
2007-11-02 19:41:12 +00:00

169 lines
3.9 KiB
PHP

--TEST--
Test array_rand() function : usage variation - with associative arrays for 'input' parameter
--FILE--
<?php
/* Prototype : mixed array_rand(array $input [, int $num_req])
* Description: Return key/keys for random entry/entries in the array
* Source code: ext/standard/array.c
*/
/*
* Test behaviour of array_rand() function when associative array is passed to
* the 'input' parameter in the function call
*/
echo "*** Testing array_rand() : with associative arrays ***\n";
// initialise associative arrays
$asso_arrays = array(
// array with numeric keys
/*1*/ array(1 => 'one', 2 => 2, 1234567890 => 'big', -1 => 'negative key',
2.3 => 'float key', 0 => "zero key", 0.2 => 'decimal key',
2e2 => 'exp key1', -2e3 => 'negative exp key'),
// array with string keys
array('one' => 1, "two" => 2.0, "three" => 'three',
'12twelve' => 12.00, "" => 'empty string', " " => "space key"),
// array with hexa values as keys
/*3*/ array(0xabc => 2748, 0x12f => '303', 0xff => "255", -0xff => "-255"),
// array with octal values as keys
array(0123 => 83, 0129 => 10, 010 => "8", -0348 => "-28", 0012 => '10'),
// array with bool values as keys
array(TRUE => '1', true => true, TrUe => "TRUE",
FALSE => '0', false => false, FaLsE => "FALSE"),
// array with special chars as keys
/*6*/ array('##' => "key1", '&$r' => 'key2', '!' => "key3", '<>' =>'key4',
"NULL" => 'key5', "\n" => 'newline as key',
"\t" => "tab as key", "'" => 'single quote as key',
'"' => 'double quote as key', "\0" => "null char as key")
);
/* looping to test array_rand() function with different arrays having
* different types of keys
*/
$counter = 1;
foreach($asso_arrays as $input) {
echo "\n-- Iteration $counter --\n";
// with default argument
echo"\nWith default argument\n";
var_dump( array_rand($input) );
// with default and optional arguments
echo"\nWith num_req = 1\n";
var_dump( array_rand($input, 1) ); // with $num_req=1
echo"\nWith num_req = 2\n";
var_dump( array_rand($input, 2) ); // with $num_req=2
$counter++;
} // end of for loop
echo "Done";
?>
--EXPECTREGEX--
\*\*\* Testing array_rand\(\) : with associative arrays \*\*\*
-- Iteration 1 --
With default argument
int\([012-][12.e]*[23e]*[34]*[5]*[6]*[7]*[8]*[9]*[0]*\)
With num_req = 1
int\([012-][12.e]*[23e]*[34]*[5]*[6]*[7]*[8]*[9]*[0]*\)
With num_req = 2
array\(2\) {
\[0\]=>
int\([012-][12.e]*[23e]*[34]*[5]*[6]*[7]*[8]*[9]*[0]*\)
\[1\]=>
int\([012-][12.e]*[23e]*[34]*[5]*[6]*[7]*[8]*[9]*[0]*\)
}
-- Iteration 2 --
With default argument
string\([0-9]*\) "[ot1 ]*[hnw2]*[eort]*[ew]*[e]*[l]*[v]*[e]*"
With num_req = 1
string\([0-9]*\) "[ot1 ]*[hnw2]*[eort]*[ew]*[e]*[l]*[v]*[e]*"
With num_req = 2
array\(2\) {
\[0\]=>
string\([0-9]*\) "[ot1 ]*[hnw2]*[eort]*[ew]*[e]*[l]*[v]*[e]*"
\[1\]=>
string\([0-9]*\) "[ot1 ]*[hnw2]*[eort]*[ew]*[e]*[l]*[v]*[e]*"
}
-- Iteration 3 --
With default argument
int\([23-]*[2570]*[345]*[58]*\)
With num_req = 1
int\([23-]*[2570]*[345]*[58]*\)
With num_req = 2
array\(2\) {
\[0\]=>
int\([23-]*[2570]*[345]*[58]*\)
\[1\]=>
int\([23-]*[2570]*[345]*[58]*\)
}
-- Iteration 4 --
With default argument
int\([18-]*[023]*[8]*\)
With num_req = 1
int\([18-]*[023]*[8]*\)
With num_req = 2
array\(2\) {
\[0\]=>
int\([18-]*[023]*[8]*\)
\[1\]=>
int\([18-]*[023]*[8]*\)
}
-- Iteration 5 --
With default argument
int\([01]\)
With num_req = 1
int\([01]\)
With num_req = 2
array\(2\) {
\[0\]=>
int\([01]\)
\[1\]=>
int\([01]\)
}
-- Iteration 6 --
With default argument
string\([0-9]*\) "[#&!N <\n\t'"\0]*[U#$>]*[rL]*[L]*"
With num_req = 1
string\([0-9]*\) "[#&!N <\n\t'"\0]*[U#$>]*[rL]*[L]*"
With num_req = 2
array\(2\) {
\[0\]=>
string\([0-9]*\) "[#&!N <\n\t'"\0]*[U#$>]*[rL]*[L]*"
\[1\]=>
string\([0-9]*\) "[#&!N <\n\t'"\0]*[U#$>]*[rL]*[L]*"
}
Done