php intval功能实现
PHP intval 功能实现
intval 是 PHP 中用于将变量转换为整数的函数。以下是其功能实现的核心逻辑和注意事项:
基本语法
intval(mixed $value, int $base = 10): int
$value:需要转换的变量(字符串、浮点数、布尔值等)。$base:进制基数(仅当$value为字符串时生效),默认为 10 进制。
转换规则
-
布尔值
true转换为1,false转换为0。intval(true); // 返回 1 intval(false); // 返回 0 -
浮点数
直接截取整数部分(非四舍五入)。
intval(3.14); // 返回 3 intval(-2.9); // 返回 -2 -
字符串
- 若字符串以合法数字开头,则解析到第一个非数字字符为止。
- 若字符串以非数字开头,则返回
0。intval("42px"); // 返回 42 intval("px42"); // 返回 0
-
其他类型

- 数组、对象、资源等返回
0或1(依赖具体类型)。intval([]); // 返回 0 intval(new stdClass()); // 返回 1
- 数组、对象、资源等返回
进制转换($base 参数)
当 $base 为 2、8、16 等时,字符串按指定进制解析:
intval('0x1A', 0); // 返回 26(0x 前缀表示 16 进制)
intval('1010', 2); // 返回 10(二进制解析)
自定义实现示例
以下是一个简化版的 intval 实现逻辑:
function custom_intval($value, $base = 10) {
if (is_bool($value)) {
return $value ? 1 : 0;
}
if (is_float($value)) {
return (int) $value;
}
if (is_string($value)) {
return (int) strval($value);
}
if (is_array($value)) {
return count($value) ? 1 : 0;
}
return 0;
}
注意事项
- 大整数(超过
PHP_INT_MAX)会溢出。 - 非标量类型(如对象)的转换行为可能因 PHP 版本而异。
- 字符串转换时忽略前导空格,但中间空格会终止解析:
intval(" 123"); // 返回 123 intval("1 23"); // 返回 1






