将变量值限制为某些预定义值

时间:2011-04-21 20:00:34

标签: php variables conditional

最简单,最简单的方法是什么?

例如:

$var = $_GET['something'];
// how to limit the value of $var to "10", "20", "30", "40", 
// and "" for any other input ?

我的意思是有一个php辅助函数可以做到这一点,而不必使用5个IF?

5 个答案:

答案 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;
}