Проверять каждый элемент в массиве? - PullRequest
0 голосов
/ 23 января 2009

В настоящее время я пытаюсь проверить сторону сервера форм, то, как она работает, заключается в том, что все данные помещаются в массив и массив, с полем формы в качестве ключа и данными поля в качестве значения, однако мне нужно проверить, что все ключи имеют значение, связанное с другим, я хочу, чтобы отправка прекратилась, и пользователю нужно отредактировать там детали и затем повторно отправить, есть ли быстрая проверка, которую я могу запустить, а не разбивать массив на части и проверять это или проверять перед он помещается в массив с переключателем или теряет операторы if?

Ответы [ 4 ]

1 голос
/ 23 января 2009

Sico87,

Более того, вы не хотите проверять все поля одновременно. Например, у вас может быть поле контакта, содержащее опцию ввода телефонного номера, которая не обязательна, и отклонение отправки по этой причине будет проблематичным.

Во многих случаях проще тестировать поля по отдельности, чтобы вы могли уделить каждому особое внимание, в котором они нуждаются. Вам нужно уделить особое внимание адресам электронной почты и особое внимание дням рождения.

Отношение ко всем равным может вызвать очень серьезные проблемы в долгосрочной перспективе.

1 голос
/ 23 января 2009
function fieldEmpty($value) {
    return trim($value) == '';
}

if (count(array_filter($array, 'fieldEmpty'))) {
    die('bad');
}
0 голосов
/ 24 января 2009

Один из вариантов - сделать немного того и другого.

Иметь отдельный массив параметров поля с именем поля в качестве ключа.

$fieldTypes = array('nameFirst' => 'name',
                    'nameLast'  => 'name',
                    'phone'     => 'phone',
                    'email'     => 'email');
foreach($input as $key => $value) {
    switch($fieldTypes[$key]) {
        case 'name':
            //run $value against name validation
            break;
        case 'phone':
            //run $value against phone validation
            break;
        case 'email':
            //run $value against email validation
            break;
        default:
            //code here for unknown type
    }
}

Теперь это можно использовать любым количеством способов, и его легко расширить, чтобы включить такие вещи, как, если поле требуется или нет, или даже сообщения об ошибках. Превратив массив $fieldTypes в многомерный массив или массив объектов, содержащих данные.

Таким образом, если вы решите добавить поле, это, вероятно, не повлечет за собой больших изменений в коде проверки.

0 голосов
/ 23 января 2009

Как насчет чего-то вроде

<?php
$arrayFilled = true;
foreach($array as $key=>$value) {
    $arrayFilled = trim($value) == '' ? false : $arrayFilled;
    if($arrayFilled === false) { break; }
}
if($arrayFilled === false) {
    echo "missing data";
}
else {
    echo "filled array";
}

вы можете захотеть проверить не только пустую строку, но я оставлю это вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...