你会如何重构这样的东西:
$start = $_GET['s'];
if (!is_int($start) || $start < 0)
{
$start = 0;
}
这里我需要开始等于0或更大,但是稍后我将需要它等于或大于1。如何将其变成一个函数?
答案 0 :(得分:3)
内置有:
print max($_GET["s"], 0);
它仍然需要(int)
类型转换,我会直接将它应用于$ _GET访问。
答案 1 :(得分:1)
此代码无效。 $ _GET将返回一个字符串。 is_int总是会失败。您应该使用is_numeric或typecast到int。
function minimal($value, $min)
{
$value = (int)$value;
if ($value < $min)
{
return $min;
}
return $value;
}
答案 2 :(得分:0)
function myFunction($getparam, $equals){
if(!is_int($getparam) || $getparam < $equals)
return $equals
return 'your actual return value';
}
这是你打算做的事情:)?
答案 3 :(得分:0)
function positiveInt($value, $maxValue = 0) {
$value = (int) $value;
return ( $value < $maxValue ) ? $maxValue : $value;
}
$start = positiveInt($_GET['s']);
$start = positiveInt($_GET['s'], 5);
答案 4 :(得分:0)
使用ternary operator会很有帮助。并非所有人都认为三元操作易于阅读。我想是一个偏好的问题。
function unsignedInt($int) {
return (int) $int >= 0 ? (int) $int : 0;
}
$start = unsignedInt($_GET['s']);
虽然这可能仍然可能显示警告(该函数不能确保$ _GET ['s']存在),所以我个人可能会在脚本顶部声明我预期的获取变量:
$_GET['s'] = isset($_GET['s']) ? $_GET['s'] : '';
由于函数非常相似,我可能会在变量声明中完成所有操作,而不是使用函数:
$start = isset($_GET['s']) && (int) $_GET['s'] >= 0 ? (int) $_GET['s'] : 0;
所以我认为这取决于您计划在代码中使用此方法的方式。