使用foreach替换每个$ _POST的isset

时间:2014-09-03 00:40:02

标签: php

我一直在尝试使用foreach替换$ _POST(s)的每个集合。

这是每个$ _POST使用isset的真实代码:

<form method='post'>

    <input type='text' name='name'> <br>
    <input type='text' name='address'> <br>
    <input type='submit' name='send'> 

</form>

<?php

if (isset($_POST['name']) && isset($_POST['address']) && isset($_POST['send']))
{
   echo "All elements have been submitted";
}
   else
{
   echo "You forget some elements, try checking name or address";
}

?>

有没有一种方法可以替换上面的4个isset(s),每个使用单个isset? 我做了这个,但它出错了。

<form method='post'>

    <input type='text' name='nama'> <br>
    <input type='text' name='alamat'> <br>
    <input type='submit' name='kirim'> 

</form>

<?php

foreach($_POST as $value)
{
    if (isset($value))
    {
      echo "All elements have been submitted";
    }
    else
    {
      echo "You forget some elements, try checking name or address";
    }
}
?>

需要帮助的人,如果我必须为我通过post / get发送的每个元素逐个编写isset,那只是浪费时间。我之前在visual basic中看过这样的东西,我的朋友做了一个foreach构造来验证表单中的所有文本框,所以他不需要再创建这样的东西:

if textbox1.text="" && textbox.2.text="" and so on

2 个答案:

答案 0 :(得分:1)

编辑: jbrahy刚出错。他现在的答案很好。

我认为jbrahy的方法是正确的总体思路......但我认为它确实无效。

我这样做。

    $requiredFields = ["nama","alamat","kirim"];

    $allElementsSet = true;
    foreach ($requiredFields as $requiredField)
    {
         if (!isset($_POST[$requiredField]))
         {
             $allElementsSet = false;
             break;
         }
    }
    if ($allElementsSet)
    {
        echo "All elements have been submitted";
    } else {
        echo "You forget some elements, try checking name or address";
    }

答案 1 :(得分:0)

$ _ POST只会传入传入的变量,而且只有提交才会传入HTML元素。最好创建一个$ required_fields数组,如果你可以获得一些字段验证,那就更好了,但这不是你在这里要求的。你需要获取$ _POST的键和值。

$required_fields = array("name" => FALSE, "alamat" => FALSE, "kirim" => FALSE);

foreach ($required_fields as $key => $value){
    if (isset($_POST[$key])){
        $required_fields[$key] = TRUE;
    }
}

foreach ($required_fields as $key => $value){
     if (!$required_fields[$key]){
         echo "Missing value for " . $key;
     }
}

如果你想弄清楚传入的每个键是否都有值,那么这样的东西也会起作用。

foreach ($_POST as $key => $value){
    if ($value == ""){
        echo "Value(s) are missing";
        break;
    }
}