数组内的php条件
在下面的代码中,当{VarName}为空(空白或null)时,我需要能够设置不同的where条件 数组定义中是否可能有if条件?或者,我可以在sql查询中进行验证吗数组内的php条件,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,在下面的代码中,当{VarName}为空(空白或null)时,我需要能够设置不同的where条件 数组定义中是否可能有if条件?或者,我可以在sql查询中进行验证吗 $col["editoptions"] = array( "value"=>$str, "onchange" => array( array( &quo
$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" )));
可以在数组定义中使用三元,如下所示:
条件?值(如果为真):值(如果为假)
e、 g
1==1?“是:'否';//计算结果为“是”
因此,在你的情况下:
$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放入变量中,并在数组定义中引用该变量:
$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";