PHP不会在IF中读取第二个条件,在第一个不是真的情况下

ato*_*oms 1 php

我想知道是否有更有效的方式来编写以下内容;

if(isset($_POST['AddressLineOne'])){

    if($_POST['AddressLineOne'] != ""){

        $sAddressLineOne = $_POST['AddressLineOne'];

    }else{ 
        $sError .= "[AddressLineOne]"; 
    }

}else{ 
    $sError .= "[AddressLineOne]"; 
}
Run Code Online (Sandbox Code Playgroud)

我可以写一些类似于其他语言(java?)的东西,这会阻止If正在运行的语句中的第二个条件,如果第一个没有遇到?即;

if(isset($_POST['AddressLineOne']) && $_POST['AddressLineOne'] != "" ){
    $sAddressLineOne = $_POST['AddressLineOne'];
}else{ 
    $sError .= "[AddressLineOne]"; 
}
Run Code Online (Sandbox Code Playgroud)

我已经编写了下面的函数,但它并不总是适合使用它,或者需要更多的控制来检查.

function CalcRequiredFields($aRequiredFields, $aPostData){

    $sError = "";
    $error = false;

    foreach($aRequiredFields as $field) {
        if (empty($aPostData[$field])) {
            $error = true;
            $sError .= "[".$field."]" ;
            $sError .= "[emptyFields]";
        }
    }
    if($error){ return $sError; }else{ return ""; }
}
Run Code Online (Sandbox Code Playgroud)

Fun*_*ner 5

你可以简单地分解

if(isset($_POST['AddressLineOne'])){

    if($_POST['AddressLineOne'] != ""){
Run Code Online (Sandbox Code Playgroud)

只使用条件empty():

if(!empty($_POST['AddressLineOne'])){...}
Run Code Online (Sandbox Code Playgroud)

或使用三元运算符:

$var = !empty($_POST['var']) ? $_POST['var'] : "";
Run Code Online (Sandbox Code Playgroud)

您还可以将其用作isset():

$var = isset($_POST['var']) ? $_POST['var'] : "";
Run Code Online (Sandbox Code Playgroud)

参考文献:

  • 请记住`<?php var_dump(empty('0'));`print`bool(true)`.但是给定参数名称"AddressLineOne",这在这里很可能不是问题. (2认同)