Мне нужно проверить, существуют ли переменные $_POST
с использованием одного оператора isset.
if (isset$_POST['name'] && isset$_POST['number'] && isset$_POST['address'] && etc ....)
есть ли простой способ достичь этого?
Используйте простой способ с array_diff и array_keys
$check_array = array('key1', 'key2', 'key3'); if (!array_diff($check_array, array_keys($_POST))) echo 'all exists';
$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
изменится, вам не нужно обновлять массив новыми именами.
Вам нужно условие, которое должно быть выполнено, если любое из них установлено или все?
foreach ($_POST as $var){ if (isset($var)) { } }
$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 } } }
Ниже приведена настраиваемая функция, которая принимает массив для требуемых опубликованных элементов в качестве параметра и возвращает true, если они все размещены, и ни одна из них не является пустой строкой ''
или false, если есть хотя бы один из них:
function checkPosts($posts){ if (!is_array($posts)) return "Error: Invalid argument, it should be an array"; foreach ($posts as $post){ if (!isset($_POST[$post]) || $_POST[$post] == '') return false; } return true; } // The structure of the argument array may be something like: $myPosts = array('username', 'password', 'address', 'salary');
if isset(($_POST['name']) && ($_POST['number']) && ($_POST['address']))
Вы также можете использовать это. это может быть проще.