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()foreach は のすべての値をループするため、 は常に true を返します$_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 に答える