--TEST--
Test is_scalar() function
--FILE--
<?php
/* Prototype: bool is_scalar ( mixed $var );
* Description: Finds whether a variable is a scalar (i.e integer, float, string or boolean)
*/
echo "*** Testing basic operations ***\n";
$scalar_variables = array(
0, // integers
1,
-45678,
0x5FF, // hexadecimal as integer
0X566,
-0xAAF,
-0XCCF,
01234, // octal as integer
-0126,
0.0, // floats
-1.0,
1e5,
-1e7,
1.6E7,
475.e-8,
784.e+30,
98.45E+40,
.5E-40,
"", // strings
'',
" ",
' ',
"string",
'string',
"0", // numeric as string
"40",
"50.696",
"0x534",
"0X534",
TRUE, // boolean
FALSE,
true,
false
);
/* loop through each valid scalar variables in $scalar_variables
and see the working of is_scalar(), expected output: bool(true)
*/
$loop_counter = 1;
foreach($scalar_variables as $scalar) {
echo "-- Iteration $loop_counter --\n"; $loop_counter++;
var_dump( is_scalar($scalar) );
}
echo "\n*** Testing possible variations ***\n";
// different scalar variables which are unset
$int_var = 10;
$float_var = 1e5;
$string_var = "string";
$boolean_var = true;
$object = new stdclass;
$array = array(10);
$resource = opendir('.');
unset($int_var, $float_var, $string_var, $boolean_var, $object, $array, $resource);
// resources
$fp = fopen(__FILE__, "r");
$dfp = opendir(".");
$variation_array = array(
NULL,
null,
array(), // arrays
array(NULL),
array(true),
array(0),
array(1,2,3,4),
$fp, // resources
$dfp,
new stdclass, // object
@$int_var, // scalars that are unset
@$float_var,
@$string_var,
@$boolean_var,
@$array, // non scalars that are unset
@$object,
@$resource,
@$undefined_var // undefined variable
);
/* loop through each element of $variation_array to see the
working of is_scalar on non-scalar values, expected output: bool(false)
*/
$loop_counter = 1;
foreach( $variation_array as $value ) {
echo "-- Iteration $loop_counter --\n"; $loop_counter++;
var_dump( is_scalar($value) );
}
echo "\n*** Testing error conditions ***\n";
// Zero arguments
var_dump( is_scalar() );
// Arguments more than expected
var_dump( is_scalar( $scalar_variables[2], $scalar_variables[2]) );
var_dump( is_scalar( new stdclass, new stdclass) );
echo "Done\n";
// close the resources used
fclose($fp);
closedir($dfp);
?>
--EXPECTF--
*** Testing basic operations ***
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Iteration 5 --
bool(true)
-- Iteration 6 --
bool(true)
-- Iteration 7 --
bool(true)
-- Iteration 8 --
bool(true)
-- Iteration 9 --
bool(true)
-- Iteration 10 --
bool(true)
-- Iteration 11 --
bool(true)
-- Iteration 12 --
bool(true)
-- Iteration 13 --
bool(true)
-- Iteration 14 --
bool(true)
-- Iteration 15 --
bool(true)
-- Iteration 16 --
bool(true)
-- Iteration 17 --
bool(true)
-- Iteration 18 --
bool(true)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(true)
-- Iteration 23 --
bool(true)
-- Iteration 24 --
bool(true)
-- Iteration 25 --
bool(true)
-- Iteration 26 --
bool(true)
-- Iteration 27 --
bool(true)
-- Iteration 28 --
bool(true)
-- Iteration 29 --
bool(true)
-- Iteration 30 --
bool(true)
-- Iteration 31 --
bool(true)
-- Iteration 32 --
bool(true)
-- Iteration 33 --
bool(true)
*** Testing possible variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
*** Testing error conditions ***
Warning: is_scalar() expects exactly 1 parameter, 0 given in %s on line %d
NULL
Warning: is_scalar() expects exactly 1 parameter, 2 given in %s on line %d
NULL
Warning: is_scalar() expects exactly 1 parameter, 2 given in %s on line %d
NULL
Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>