2017-11-10 3 views
0

너무 많은 if-loop없이 "더 똑똑하게"작동하도록 코드를 수정할 수 있습니까? 나는 지금까지 시도한 것을 첨부하고있다.어떻게 PHP 코드를 짧게 할 수 있습니까?

$error1 = $error2 = $error3 = $error4 = $error5 = $error6 = $error7 = $error8 = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

    if (empty($_POST["fname"])) { 
     $error1 = "fill in fname"; 
    } 
    if (empty($_POST["lname"])) { 
     $error2 = "fill in lname"; 
    } 
    if (empty($_POST["street"])) { 
     $error3 = "fill in street"; 
    } 
    if (empty($_POST["city"])) { 
     $error4 = "fill in city"; 
    } 
    if (empty($_POST["postcode"])) { 
     $error5 = "fill in postcode"; 
    } 
    if (empty($_POST["country"])) { 
     $error6 = "fill in country"; 
    } 
    if (empty($_POST["email"])) { 
     $error7 = "fill in email"; 
    } 
    if (empty($_POST["phone"])) { 
     $error8 = "fill in phone"; 
    } 
} 

미리 감사드립니다.

+0

대신 8 개 변수'$ error1'을,'$ error2' 등은 $ 오류 ='오류의 배열을 만들 수 있습니다 [] ; 그리고 if 문에서 배열에 오류를 추가하십시오 – ArtOsi

답변

1

이 시도 확인하십시오 : 예를 들어

$errors = array(); 
$inputs = array("fname", "lname", "street", "city", "postcode", "country", "email", "phone"); 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    foreach($_POST as $key => $arg) { 
     if(in_array($key, $inputs) && empty($arg)){ 
      $errors[] = "fill in " . $key; 
     } 
    } 
} 
1

$formfields = array('fname','lname','street','city','postcode','country','email','phone'); 
$errMsg = ""; 
if(isset($_POST) && count($_POST)>0){ 
    foreach($_POST as $key => $val){ 
     if(in_array($key, $formfields)){ 
      if (empty($_POST[$key])) { $errMsg[] = "fill in ". $key; } 
     } 
    } 
} 

if(count($errMsg)>0) 
    echo implode("<br/>",$errMsg); 
관련 문제