intval
是 PHP 中的一个内置函数,用于将变量转换为整数。如果你想自己实现一个类似 intval
的函数,可以按照以下步骤进行:
+
或 -
开头,记录符号。function my_intval($var, $base = 10) {
if (is_int($var)) {
return $var;
}
if (is_float($var)) {
return (int)$var;
}
if (is_string($var)) {
// 去除前导空格
$var = ltrim($var, ' ');
// 处理符号
$sign = 1;
if ($var[0] === '+' || $var[0] === '-') {
$sign = ($var[0] === '-') ? -1 : 1;
$var = substr($var, 1);
}
// 遍历字符串,提取数字部分
$result = 0;
for ($i = 0; $i < strlen($var); $i++) {
$char = $var[$i];
if (ctype_digit($char)) {
$result = $result * $base + (int)$char;
} else {
break;
}
}
return $result * $sign;
}
// 处理其他类型
return (int)$var;
}
// 测试
echo my_intval("42"); // 输出: 42
echo my_intval("+42"); // 输出: 42
echo my_intval("-42"); // 输出: -42
echo my_intval("42.7"); // 输出: 42
echo my_intval("42abc"); // 输出: 42
echo my_intval("abc42"); // 输出: 0
echo my_intval(true); // 输出: 1
echo my_intval(false); // 输出: 0
echo my_intval([]); // 输出: 0
echo my_intval(new stdClass()); // 输出: 1
my_intval
函数首先检查输入的类型。intval
的所有功能,例如 intval
还支持第二个参数 $base
来指定进制转换。上述代码中已经包含了 $base
参数的处理,但只支持十进制。这个实现可以满足大部分简单的需求,但如果你需要完全复刻 intval
的行为,可能需要更复杂的逻辑。