对于十进制的转换,两种方式的功能是完全一致的:
$int = intval($str);
// 等价于
$int = (int) $str;
而 intval()
具备一个可选参数 $base
默认值为 10
,用于转换不同来自进制的数据:
$test_int = 12;
$test_float = 12.8;
$test_string = “12”;
echo (int) $test_int; // == 12
echo (int) $test_float; // == 12
echo (int) $test_string; // == 12
echo intval($test_int, 8); // == 12
echo intval($test_float, 8) // == 12
echo intval($test_string, 8); // == 10
intval()
会将类型已经是 int
或 float
的数据当作「无需转换」而直接返回!
所以如上,$test_int
和 $test_float
并没有按照八进制转换,使用时一定需要注意避免踩坑。
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(’42abc’); // 42
echo intval(42, 8); // 42
echo intval(’42’, 8); // 34
echo intval(array()); // 0
echo intval(array(‘foo’, ‘bar’)); // 1
echo intval(false); // 0
echo intval(true); // 1
int是指Integer整型
intval是指用于获取变量整数值的函数(不填默认为10进制)
intval的几个注意点:
- 如果参数是字符串,则返回字符串中第一个不是数字的字符之前的数字串所代表的整数值。
- 如果参数类型已经是
int
或float
,将直接返回。 - 如果参数以0开头,默认转换为8进制
- 在超出各种类型显示的最大值时,返回值出错