最简单,最简单的方法是什么?
例如:
$var = $_GET['something'];
// how to limit the value of $var to "10", "20", "30", "40",
// and "" for any other input ?
我的意思是有一个php辅助函数可以做到这一点,而不必使用5个IF?
答案 0 :(得分:7)
in_array
是合适的:
if(!in_array($var, array("10", "20", "30", "40"))
{
// $var will be "" if it does not equal: "10", "20", "30", or "40"
$var = "";
}
答案 1 :(得分:2)
是的,您可以构建预定义的数组,然后对其进行验证:
$array = (10, 20, 30, 40);
if(in_array($array, $var)){
// validated
} else {
// invalid
}
答案 2 :(得分:1)
限制或检查?
if (isset($_GET['something'])) {
$validSomethings = array("10", "20", "30", "40");
foreach ($validSomethings as $something) {
if ($something == $_GET['something']) {
// it's valid. do it.
} else {
// not valid
}
}
}
答案 3 :(得分:1)
更加非传统的方法:
$map = array(10, 20, 30, 40); // == range(10, 40, 10);
$map = array_combine($map, $map);
$value = "{$map[$_GET['something']]}";
其优点是隐式生成不需要的参数通知(用于记录)。
答案 4 :(得分:1)
你所要求的并不完全清楚。 5 ifs有很多替代品。 您可以使用数学来限制响应。
$var = (is_numeric($var))?(($var>40 || $var < 10)?"":floor($var/10)*10):"";
您可以使用一个switch statement。
switch($var){
case "10":
case "20":
case "30":
case "40":
//do something?
break;
default:
$var = "";
//do something else?
break;
}