做这个逻辑有没有简短的手?

时间:2011-05-14 11:02:32

标签: php shortcut

这是代码......

if(!(isset($_POST["email"]) && isset($_POST["sessionKey"]) && isset($_POST["page"]) && isset($_POST["ipp"]))){
        return;
}else{
   $email       = htmlspecialchars($_POST["email"]);           
   $sessionKey  = htmlspecialchars($_POST["sessionKey"]);           
   $page        = htmlspecialchars($_POST["page"]);           
   $ipp         = htmlspecialchars($_POST["ipp"]);           
}  

好的,我的想法是我必须为参数分配相同的变量。例如,如果我发布一个参数“test”,我必须将它分配给一个变量.... test ......对我来说这样做有什么捷径吗?谢谢。

4 个答案:

答案 0 :(得分:2)

$data=array_map('htmlspecialchars',$_POST); 
extract($data);

小心使用extract这可以覆盖具有相同名称的现有变量,但您可以通过将其他参数传递给提取函数来更改此行为。

答案 1 :(得分:2)

看看:

http://php.net/manual/en//function.extract.php

此外,isset接受多个参数,因此您可以像这样使用它:

if (isset($_POST["sessionKey"], $_POST["page"], $_POST["ipp"])) ...

请参阅:http://www.php.net/manual/en/function.isset.php

答案 2 :(得分:1)

这是提取部分的另一种可能性:

foreach (array('email','sessionKey','page','ipp') as $v) {
  $$v = htmlspecialchars($_POST[$v]);
}

答案 3 :(得分:1)

要扩展extract答案,您只能切出所需的$ _POST条目:

$vars = array_intersect_key($_POST,
   array_flip(array("email", "sessionKey", "page", "ipp")));

// and then this replaces the isset() check and the extraction
if (count($vars) == 4) {
   extract(array_map("htmlspecialchars", $vars));
}