PHP 不会在 IF 中读取 seccond 条件,以防首先不为真


PHP dont read seccond condition in IF, in the case of first not being true

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

if(isset($_POST['AddressLineOne'])){
    if($_POST['AddressLineOne'] != ""){
        $sAddressLineOne = $_POST['AddressLineOne'];
    }else{ 
        $sError .= "[AddressLineOne]"; 
    }
}else{ 
    $sError .= "[AddressLineOne]"; 
}

我是否可以编写类似于其他语言(java?)的东西,如果不满足第一个条件,这将阻止正在运行If语句中的seccond条件?

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

我已经在下面编写了函数,但它并不总是适合使用它,或者需要对检查进行更多控制。

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 ""; }
}

你可以简单地分解

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

仅使用条件empty()

if(!empty($_POST['AddressLineOne'])){...}

或使用三元运算符:

$var = !empty($_POST['var']) ? $_POST['var'] : "";

您也可以将其用作isset()

$var = isset($_POST['var']) ? $_POST['var'] : "";

引用:

  • http://php.net/manual/en/function.empty.php
  • http://php.net/manual/en/language.operators.comparison.php