簡體   English   中英

數組內的php條件

[英]php condition inside array

在下面的代碼中,當 {VarName} 為空(空白或空)時,我需要能夠設置不同的 where 條件。

數組定義中是否可以有 if 條件? 或者,我可以在 sql 查詢中進行驗證嗎?

$col["editoptions"] = array(
             "value"=>$str, 
             "onchange" => array(
              array(
              "sql"=> "select distinct place as k, place as v from mytable                                       
                      WHERE Name = '{VarName}' 
                      AND Area = '{VarArea}'
                      ORDER BY place",
              "update_field" => "Localidade" )));

您可以在數組定義中使用三元,如下所示:

condition ? value-if-true : value-if-false

例如,

1 == 1 ? 'yes' : 'no'; // evaluates to 'yes'

所以在你的情況下:

$col["editoptions"] = array(
    "value"=>$str, 
    "onchange" => array(
        array(
            "sql"=> empty($VarName) ?
                "YOUR ALTERNATIVE SQL HERE" : 
                "select distinct place as k, place as v from mytable                                       
                      WHERE Name = '{VarName}' 
                      AND Area = '{VarArea}'
                      ORDER BY place",
              "update_field" => "Localidade"
        )
    )
);

為了使您的數組定義更整潔,您應該考慮將您的 SQL 放在一個變量中並在數組 def 中引用該變量:

$sql = empty($VarName) ?
    "YOUR ALTERNATIVE SQL HERE" : 
    "select distinct place as k, place as v from mytable                                       
        WHERE Name = '{VarName}' 
        AND Area = '{VarArea}'
        ORDER BY place";
$col["editoptions"] = array(
    "value"=>$str, 
    "onchange" => array(
        array(
            "sql" => $sql,
            "update_field" => "Localidade"
        )
    )
);

就像@Matt 說的,你可以像下面這樣構建內部數組。

$VarName1 = null;

$col["editoptions"] = array(
    "value"=> 'value', 
    "onchange" => array(
     array(
     "sql"=> "select distinct place as k, place as v from mytable                                       
             WHERE Name = " . ( $VarName1 ? "'{VarName1}'" : "'{VarName2}'" ) .     
             "AND Area = '{VarArea}'
             ORDER BY place",
     "update_field" => "Localidade" )));

如果您使用另一個變量中的條件在字符串中生成 sql 會更好,如下所示以便於維護。

$sql = "select distinct place as k, place as v from mytable                                      
WHERE Name = ";
if( $VarName1 ){
    $sql .= "'{VarName1}'";
}
else{
    $sql .= "'{VarName2}'";
}
$sql .=   "AND Area = '{VarArea}' ORDER BY place";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM