Я просто представляю алгоритмически то, что хочу достичь, используя цикл foreach и массив $ _POST в php.
function check_fields($_POST) { // provide $_post['field1'],$_post['field2']..so on foreach($_POST as $_POST['FIELD 1-N'] { isvalid($_POST['FIELD1 - N']); } }
Надеюсь, вы понимаете, что я пытаюсь спросить …
EDIT: $ _POST ['FIELD1'], $ _POST ['FIELD1'] и т. Д. – это имена переменных, которые передаются функции isvalid (). Что делает функция isvalid (), является использование isset () и пустым, чтобы проверить, содержит ли переменная значение …
С помощью foreach
вам не нужно знать имена ключей в массиве.
foreach($_POST as $key => $field) { isvalid($field); }
$key
содержит имена типа «field1», «field2» и т. д., тогда как $field
содержит значение внутри массива $_POST
. Затем цикл foreach запускает функцию invalid()
для каждого значения поля.
Чтобы проверить, установлены ли значения полей:
// Sample $_POST array $_POST = array( "field1" => "", // this is not set "field2" => "data" ); foreach($_POST as $key => $field) { // You can check if it is empty using foreach alone if (strlen($field) > 0) { // this field is set } else { // this field is not set } }
Вы можете использовать empty()
но он относится к "0"
как пустой, поэтому будьте осторожны.
Попробуй это
foreach($_POST as $fieldName => $fieldValue) { isvalid($fieldValue); }
Предполагая, что вы являетесь tyring для создания функции проверки, называемой isvalid
;
function isvalid($input) { return ('' !== trim($input)); } // loop $errors = arrray(); foreach ($_POST as $key => $value) { if (!isvalid($value)) { $errors[] = "$key not be empty!"; } } print_r($errors);
Между тем, если вход $_POST
не isset, то он не будет в foreach.
Один цикл цикла для получения ключей и значений массива:
foreach( $_POST as $key => $value ) { isvalid( $key, $value ); }
… поэтому вам нужно изменить isvalid()
чтобы принять два параметра, если вам нужно получить field1
, field2
и т. д.
РЕДАКТИРОВАНИЕ
$errors = array(); foreach( $_POST as $key => $value ) if ( empty( $value ) ) $errors[] = $key; if ( !empty( $errors ) ) echo 'You have errors on: <pre>' . print_r( $errors, true ) . '</pre>';
… вы можете отменить отправку, если $errors
не пуст.