Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组内的php条件_Php_Mysql_Sql_Arrays - Fatal编程技术网

数组内的php条件

数组内的php条件,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,在下面的代码中,当{VarName}为空(空白或null)时,我需要能够设置不同的where条件 数组定义中是否可能有if条件?或者,我可以在sql查询中进行验证吗 $col["editoptions"] = array( "value"=>$str, "onchange" => array( array( &quo

在下面的代码中,当{VarName}为空(空白或null)时,我需要能够设置不同的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" )));

可以在数组定义中使用三元,如下所示:

条件?值(如果为真):值(如果为假)

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