我一直在尝试使用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
答案 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;
}
}