intval() 函数用于获取变量的整数值。
语法
int intval ( mixed $var [, int $base = 10 ] )
参数说明:
- $var:要转换成 integer 的数量值。
- $base:转化所使用的进制。
如果 base 是 0,通过检测 var 的格式来决定使用的进制:
- 如果字符串包括了 “0x” (或 “0X”) 的前缀,使用 16 进制 (hex);否则,
- 如果字符串以 “0” 开始,使用 8 进制(octal);否则,
- 将使用 10 进制 (decimal)。
重要事项:
虽然默认值是10,但是在未指定 intval() 函数的第二个参数,并且输入字符串以前导零开头,PHP 会将数字解释为八进制值。
例如,如果您有输入字符串“0123”,PHP 会将其解释为八进制数 83(十六进制为 0x53)。 但是,如果输入字符串没有前导零,或者如果第二个参数指定为不同的基数,例如基数 10,则输入字符串将被解释为十进制数。
了解此行为很重要,因为如果您没有正确处理可能包含八进制值的输入,它可能会导致意外结果或代码漏洞。 为避免这种情况,请在使用 intval() 时始终显式指定基本参数,或使用其他函数(例如 filter_var() 或 ctype_digit() )来验证和清理输入。
echo intval(42); // 42 echo intval(4.2); // 4 echo intval('42'); // 42 echo intval('+42'); // 42 echo intval('-42'); // -42 echo intval(042); // 34 echo intval('042'); // 42 echo intval(1e10); // 1410065408 echo intval('1e10'); // 1 echo intval(0x1A); // 26 echo intval(42000000); // 42000000 echo intval(420000000000000000000); // 0 echo intval('420000000000000000000'); // 2147483647 echo intval(42, 8); // 42 echo intval('42', 8); // 34 echo intval(array()); // 0 echo intval(array('foo', 'bar')); // 1