2

私は多くのissetチェックを持っています:

if (isset($_POST['name']) && isset($_POST['day']) && isset($_POST['month']) && isset($_POST['year']) && isset($_POST['email']) && isset($_POST['email2'])&& isset($_POST['pass']) && isset($_POST['pass2']))
{

短くする方法はありますか?

$isset = array
(
    'name', 'day', 'month', 'year',
    'email', 'email2', 'pass', 'pass2'
);

foreach ($isset As $set)
{
    if (!isset($_POST[$set]) || empty($_POST[$set]))
    {
        echo 'error';
        break;
    }
}

あれは正しいですか?

4

5 に答える 5

4

ループemptyのみを使用できます:

$keys = array('name', 'day', 'month');  // ...

foreach ($keys as $key) {
  if (empty($_POST[$key])) {
    // fail
    break;
  }
}

または、次を使用できますarray_diff_key()

if (array_diff_key(array_flip($keys), $_POST)) {
  // fail (some keys not present in $_POST)
}
于 2013-05-16T21:43:58.213 に答える
3

isset()複数の引数を取ることができるので、このように単純に短縮できます。

if (isset($_POST['name'], $_POST['day'], $_POST['month'], $_POST['year'], $_POST['email'], $_POST['email2'], $_POST['pass'], $_POST['pass2']))

PHP ドキュメント: http://php.net/manual/en/function.isset.php

于 2013-05-16T21:47:58.383 に答える