php intval代码实现
intval 函数的基本实现
PHP 的 intval 函数用于将变量转换为整数。以下是一个简单的实现示例:

function my_intval($var, $base = 10) {
if (is_array($var)) {
return 0;
}
if (is_object($var)) {
return 1;
}
if (is_bool($var)) {
return (int)$var;
}
if (is_null($var)) {
return 0;
}
if (is_string($var)) {
$var = trim($var);
if ($var === '') {
return 0;
}
if (strtolower($var) === 'infinity') {
return 0;
}
if (strtolower($var) === '-infinity') {
return 0;
}
if ($base === 0) {
if (strlen($var) > 2 && $var[0] === '0') {
$chr = $var[1];
if ($chr === 'x' || $chr === 'X') {
$base = 16;
} elseif ($chr === 'b' || $chr === 'B') {
$base = 2;
} else {
$base = 8;
}
} else {
$base = 10;
}
}
return intval($var, $base);
}
return (int)$var;
}
处理不同数据类型
对于不同的输入数据类型,intval 有不同的处理方式:

- 数组:返回 0
- 对象:返回 1
- 布尔值:true 返回 1,false 返回 0
- NULL:返回 0
- 字符串:根据字符串内容转换为整数
字符串转换细节
字符串转换时需要注意以下几点:
- 空字符串返回 0
- 忽略前导和尾随空格
- 识别十六进制(0x)、二进制(0b)和八进制(0)前缀
- 支持指定基数(2-36)
边界情况处理
以下是一些边界情况的处理示例:
// 浮点数
echo my_intval(42.7); // 42
// 科学计数法
echo my_intval('4.2e2'); // 420
// 十六进制
echo my_intval('0x1A'); // 26
// 二进制
echo my_intval('0b1010'); // 10
// 八进制
echo my_intval('012'); // 10
性能考虑
在实际实现中,直接使用 PHP 内置的 intval 函数性能最佳。自定义实现主要用于理解函数工作原理,或在不支持内置函数的环境中使用。






