這樣做的最簡單方法是什麼?將變量值限制爲某些預定義的值
例如:
$var = $_GET['something'];
// how to limit the value of $var to "10", "20", "30", "40",
// and "" for any other input ?
我的意思是有一個PHP輔助函數可以做到這一點,而不必使用5倍的IF?
這樣做的最簡單方法是什麼?將變量值限制爲某些預定義的值
例如:
$var = $_GET['something'];
// how to limit the value of $var to "10", "20", "30", "40",
// and "" for any other input ?
我的意思是有一個PHP輔助函數可以做到這一點,而不必使用5倍的IF?
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 = "";
}
是的,你可以建立一個預定義的數組,然後驗證反對:
$array = (10, 20, 30, 40);
if(in_array($array, $var)){
// validated
} else {
// invalid
}
限制或檢查?
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
}
}
}
和更非常規的方法,包括:
$map = array(10, 20, 30, 40); // == range(10, 40, 10);
$map = array_combine($map, $map);
$value = "{$map[$_GET['something']]}";
其具有隱式地產生中不需要的參數的通知(用於記錄)的優點。
這並不完全清楚你在問什麼。 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;
}
你打我秒!哈哈......做得很好。 – 2011-04-21 20:04:15
謝謝,我用過:'$ var = in_array($ _ GET [「something」],array(10,20,30,40))? $ _GET [「something」]:'';'它更短:D – Alex 2011-04-21 20:12:38
是的。這是最好的選擇。你應該檢查它的正確答案。蒂姆做得好! – 2011-04-21 20:25:57