我希望有人可以就如何改进这个功能给我一些意见。其目的是评估表单输入是否为有效整数,如果不是,则默认返回零,如果第二个参数= true,则返回-1。
编辑:这是我正在使用的功能的更新版本。似乎两个最具挑战性的部分是确保空字符串在为空字符串($ neg = true)期望-1时评估为0,并使用左填充零作为整数而不是八进制来评估输入。
function clean_integer($value, $neg=false)
{
if (!is_numeric($value)) {
if (!$neg) {
return 0;
else {
return -1;
}
}
$value = ltrim(trim($value), '0');
if (!$neg)
{
if ($value !== true && ((string)(int) $value) === ((string) $value)) {
return (int) $value;
}
else {
return 0;
}
}
else
{
if (!is_numeric($value)) {
return 0;
}
if ($value !== true && ((string)(int) $value) === ((string) $value)) {
return (int) $value;
}
else {
return -1;
}
}
}
我一直盯着这个问题太长时间了,并且我确信我做得非常复杂。
答案 0 :(得分:5)
为什么不投射它并使用is_int()方法? - http://php.net/manual/en/function.is-int.php
$num = (int) $theNumber;
echo is_int($num);
使其适应您的功能
function clean_integer($value, $neg=false) {
$num = $value; //removed the cast
if (!is_int($num)) {
return ($neg) ? -1 : 0;
}
return $num;
}