6

我有大约 40 个项目,我FORM正在尝试为所有Name=属性提供一个用于处理的变量,而不必手动写出每一个。我在这里遗漏了什么,因为下面的代码不起作用。(name="comp1", name="comp2"... $comp1, $comp2)

$en = array_merge($em, $_POST);
$valid = true; 
foreach($_POST as $value) { 
    if(!isset($value)) { 
        $valid = false;
    } 
}
4

3 回答 3

4

如果某些内容不在 中$_POST,则 foreach 将不会循环遍历它。Isset()将始终返回 true,因为 foreach 循环遍历$_POST.

于 2012-08-16T11:08:15.460 回答
3
    foreach($_POST as $k=>$val) { 
    //$$k = $val;
       if(!isset($$k)){
         echo "==NO==";
       }
    }
于 2012-08-16T11:19:48.930 回答
1

POST 将始终设置,除非您使用以下内容禁用该字段:

<input disabled="disabled"/>

如果 filds 没有此属性,则检查该字段是否已填充的唯一方法是使用空字符串进行比较,$value == ''这样:

foreach($_POST as $key => $value) {
   if($value == '') { 
        $valid[$key] = false;
   }else{
        $valid[$key] = true;
   }
}

您现在将拥有一个如下所示的数组 ($valid):

var_dump($valid['field1']); //prints true, the field was filled
var_dump($valid['field2']); //prints false, the field was NOT filled
于 2012-08-16T11:27:11.223 回答