intval php 实现
intval 函数的基本用法
intval 是 PHP 中用于将变量转换为整数的函数。其基本语法如下:
intval(mixed $value, int $base = 10): int
$value 是要转换的变量,$base 是进制基数(默认为 10)。函数返回转换后的整数值。
参数说明
- $value:需要转换为整数的变量,可以是字符串、浮点数、布尔值等。
- $base:进制基数,取值范围为 2 到 36。如果为 0,则根据
$value的格式自动判断进制(例如以 "0x" 开头的字符串会被视为十六进制)。
转换规则
-
布尔值:
true转换为 1,false转换为 0。echo intval(true); // 输出 1 echo intval(false); // 输出 0 -
浮点数:直接截取整数部分。
echo intval(3.14); // 输出 3 echo intval(-2.9); // 输出 -2 -
字符串:
- 如果字符串以数字开头,则转换到第一个非数字字符为止。
echo intval("42abc"); // 输出 42 - 如果字符串不以数字开头,则返回 0。
echo intval("abc42"); // 输出 0 - 支持十六进制(以 "0x" 开头)和八进制(以 "0" 开头)字符串。
echo intval("0x1A"); // 输出 26(十六进制) echo intval("012"); // 输出 10(八进制)
- 如果字符串以数字开头,则转换到第一个非数字字符为止。
-
数组:返回 0。

echo intval([1, 2]); // 输出 0 -
对象:如果对象实现了
__toString()方法,则先转换为字符串再处理;否则会报错。class Example { public function __toString() { return "123"; } } echo intval(new Example()); // 输出 123
进制转换示例
通过指定 $base 参数,可以将字符串按指定进制转换为整数。
echo intval("1010", 2); // 输出 10(二进制)
echo intval("1A", 16); // 输出 26(十六进制)
echo intval("10", 8); // 输出 8(八进制)
注意事项
-
大整数处理:如果字符串表示的整数超过
PHP_INT_MAX,结果会溢出。echo intval("9999999999999999999"); // 可能输出不准确的值 -
自动类型判断:当
$base为 0 时,字符串的进制会根据前缀自动判断。
echo intval("0x1A", 0); // 输出 26(十六进制) echo intval("012", 0); // 输出 10(八进制) -
非标量类型:对非标量类型(如数组、资源)调用
intval会返回 0 或警告。
实际应用场景
-
表单输入处理:将用户输入的字符串转换为整数。
$age = intval($_POST['age']); -
数据清洗:确保变量为整数类型。
$id = intval($unsafe_id); -
进制转换:将不同进制的字符串转换为十进制整数。
$hexValue = intval("FF", 16); // 255
通过合理使用 intval,可以确保数据的类型安全性和一致性。






