Любой способ сократить это, если заявление?PHP - PullRequest
0 голосов
/ 17 февраля 2019

Я стараюсь, чтобы мой код был красивым и элегантным.Есть ли способ сделать это, если оператор короче?

if(strlen($cname) > 100) {

} elseif(strlen($cowner) > 100) {

} elseif(strlen($cemail) > 200) {

} elseif(strlen($cpassword) > 100) {

}

Я не могу этого сделать, потому что хочу распечатать конкретное сообщение для каждого оператора if:

if(strlen($cname) > 100 || strlen($cowner) > 100 || strlen($cemail) > 200 || strlen($cpassword) > 100) {
  // I want to print out a message like email is too long not just one of these strings is too long
}

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

Вы уже используете оптимизированный код.Но вы можете оптимизировать его немного больше для отображения сообщения об ошибке.Как показано ниже:

$invalidFieldName = '';
$invalidFieldLength = 100;
if (strlen($cname) > 100) {
    $invalidFieldName = 'CNAME';
} elseif (strlen($cowner) > 100) {
    $invalidFieldName = 'COWNER';
} elseif (strlen($cemail) > 200) {
    $invalidFieldName = 'CEMAIL';
    $invalidFieldLength = 200;   
} elseif (strlen($cpassword) > 100) {
    $invalidFieldName = 'CPASSWORD';
}

if ($invalidFieldName != '') {    
    echo $invalidFieldName." should be greater than ".$invalidFieldLength;
}

Я не совсем уверен, поможет ли это вам, но я надеюсь, что это поможет вам.

0 голосов
/ 17 февраля 2019

Вы можете использовать цикл, чтобы уменьшить количество строк.Вот оптимизированное решение, даже если у вас есть более 10 полей для проверки:

Объявите массив полей и выполните цикл по нему

$fields = array("cname" => 100, "cowner" => 100, "cemail" => 200, "cpassword" => 100); // key as field name and value as maximum limit - new values can be added here.

foreach($fields as $field => $length) {
   if(strlen(${$field}) > $length) {
       die("$field field can only contain $length characters"); 
   }
}

Редактировать: Вы также можете сохранить все ошибки в массиве, а затем распечатать все ошибки на своей странице.

$errors = array();
foreach($fields as $field => $length) {
   if(strlen(${$field}) > $length) {
        $errors[] = "$field field can only contain $length characters"; 
   }
}
print_r($errors);
0 голосов
/ 17 февраля 2019

Честно говоря, я думаю, что у вас есть самое элегантное решение для того, что вы пытаетесь сделать.

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