6

$_POST単一ステートメント isset を使用して変数が存在するかどうかを確認する必要があります。

if (isset$_POST['name']  &&  isset$_POST['number']  &&  isset$_POST['address']  &&  etc ....)

これを達成する簡単な方法はありますか?

4

9 に答える 9

17

array_diffarray_keysで簡単な方法を使用する

$check_array = array('key1', 'key2', 'key3');
if (!array_diff($check_array, array_keys($_POST)))
    echo 'all exists';
于 2013-06-19T09:12:10.630 に答える
7
$variables = array('name', 'number', 'address');

foreach($variables as $variable_name){

   if(isset($_POST[$variable_name])){
      echo 'Variable: '.$variable_name.' is set<br/>';
   }else{
      echo 'Variable: '.$variable_name.' is NOT set<br/>';
   }

}

または、各$_POSTキー/ペアを繰り返します

foreach($_POST as $key => $value){

   if(isset($value)){
      echo 'Variable: '.$key.' is set to '.$value.'<br/>';
   }else{
      echo 'Variable: '.$key.' is NOT set<br/>';
   }

}

最後の方法はおそらく最も簡単な方法です。$_POST変数のいずれかが変更された場合、配列を新しい名前で更新する必要はありません。

于 2013-06-19T09:03:16.637 に答える
2

それらのいずれかが設定されている場合、またはすべてが設定されている場合、条件を満たす必要がありますか?

foreach ($_POST as $var){
    if (isset($var)) {

    }
}
于 2013-06-19T09:03:11.610 に答える
1
$variableToCheck = array('key1', 'key2', 'key3');

foreach($_POST AS $key => $value)
{
   if( in_array($key, $variableToCheck))
  {
     if(isset($_POST[$key])){
     // get value
     }else{
     // set validation error
    }   
  }
}
于 2013-06-19T09:07:01.010 に答える
1

あなたが求めていることはまさにissetページにあるものです

isset($_POST['name']) && isset($_POST['number']) && isset($_POST['address'])

以下と同じです:

isset($_POST['name'], $_POST['number'], $_POST['address'])

必要なすべてのキーを既に持っていることを考慮して、これをアサートするためのより良いまたは実用的な方法を求めている場合は、次のようなものを使用できます。

$requiredKeys = ['name', 'number', 'address'];
$notInPost = array_filter($requiredKeys, function ($key) {
    return ! isset($_POST[$key]);
});

issetと同じ結果を返さないことに注意してください。array_key_exists

于 2018-03-23T09:08:02.537 に答える