向if语句提供多个参数的最佳方式是什么?


What is the best way to supply many arguments to an if statement?

我创建了一个包含多个用户输入的表单,但是在提交之前需要检查每个单独的输入是否为空。是否有一种更快的方法(例如可能使用数组)列出if语句的所有参数?

目前我的代码看起来像这样,但如果可能的话,我希望它在未来更有效,就像如果我要添加更多的输入。

<form action="sign-up.php" method="post" autocomplete="off" >
Name:<input type="text" name="name" />
Username:<<input type="text" name="username"  /><br />
Password:<input type="password" name="password1" /><br />
Re-type Password:<input type="password" name="password2"  /><br />
Email:<input type="text" name="email"  />
Address:<input type="text" name="address"  />
Post Code:<input type="text" name="postcode"  />
City:<input type="text" name="city"  />
<input class="submit" type="submit" value="sign up" />
</form>
<?php
if (!empty($_POST['name']) 
&& !empty($_POST['username']) 
&& !empty($_POST['password1']) 
&& !empty($_POST['password2']) 
&& !empty($_POST['email'])   
&& !empty($_POST['address'])
&& !empty($_POST['postcode']) 
&& !empty($_POST['city']) )
{
echo "information has been submitted";
}
else {
echo "please fill in all fields!"
}
?>

如果你有任何建议,请评论。

这将循环遍历$_POST值并检查它们是否为空。如果发现其中一个为空,则将$hasErrorOccurred设置为true。下面的if statement将确定输入检查是否成功。

    $hasErrorOccurred = false;
    foreach ($_POST as $key => $value) {
        if (empty($_POST[$key])) {
            $hasErrorOccurred = true;
            break;
        }
    }
    if ($hasErrorOccurred) {
        // Your error code here.
    } else {
        // Your successful code here.
    }

阅读材料:

break;

如果您想为每个字段输入分配变量,我就是这样做的。

foreach ($_POST as $key => $value) {
 $$key = $_POST[$key];  //assigns input name to variable with the same name.
    }
if(!empty($$key)) {
//code if all fields are not empty  
}
else {
    echo "Please fill in all fields";
}

下面是我对Script47的回答的评论,这样我可以更好地澄清我的观点:

$requiredFields = ['name','username','password1','password2'];
foreach ($requiredFields as $field) {
    if (!array_key_exists($field, $_POST) || empty($_POST[$field])) {
        displayMissingFieldAlert($field);
    }
}
// do the submit etc.
...

这样,如果某个字段在提交时不知何故被遗忘、拼写错误或遗漏,您就可以捕捉到。