2017-11-10 14 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); 
関連する問題