[英]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.