Php 如果($condition\u string)工作不正常

Php 如果($condition\u string)工作不正常,php,Php,在下面的代码中 $condition_string= "empty($_SESSION['group_by_Name']) && empty($_SESSION['group_by_Email']) && empty($_SESSION['group_by_Address']) && empty($_SESSION['group_by_Age']) && empty($_SESSION['group_by_Contact'])";

在下面的代码中

$condition_string= "empty($_SESSION['group_by_Name']) && empty($_SESSION['group_by_Email']) && empty($_SESSION['group_by_Address']) && empty($_SESSION['group_by_Age']) && empty($_SESSION['group_by_Contact'])";
此代码始终执行if语句而不是else语句。谁能告诉我代码中的错误在哪里

   $observation_column_name_fetch = mysql_query("SELECT column_name
 FROM  observation_column where observation_id='$observation_id'")
     or die(mysql_error());

     while($observation_column_name_res = mysql_fetch_array( $observation_column_name_fetch ))
     {
      $observation_column_name[]=$observation_column_name_res[column_name];
     }   
     for ($i=0; $i<$observation_column_num; $i++)
     { 
      $group_by=$_POST[group_by_.$observation_column_name[$i]];
      $_SESSION[group_by_.$observation_column_name[$i]]=$group_by;
     }
     $j=1;
     $condition_string="";
     for($i=0; $i<$observation_column_num; $i++)
     {
     $condition_string.= 'empty($_SESSION[\'group_by_'.$observation_column_name[$i].'\'])';
     if($j<$observation_column_num)
      { $condition_string.=" && ";    $j++;    }
     }
     if($condition_string)
      {
      for ($i=0; $i<$observation_column_num; $i++)
        { echo "if statement executed ".$i." times<br/>";   }
      }
        else
        {
       for ($i=0; $i<$observation_column_num; $i++)
          { echo "else statement executed ".$i." times<br/>";        }
     }
$observation\u column\u name\u fetch=mysql\u query(“选择column\u name
来自观测值列,其中观测值(id=“$observation(id)”)
或者死(mysql_error());
而($observation\u column\u name\u res=mysql\u fetch\u array($observation\u column\u name\u fetch))
{
$observation_column_name[]=$observation_column_name_res[column_name];
}   

对于($i=0;$i您不能将字符串表示形式中的条件传递给if语句。在当前代码中,您只需检查字符串
$condition\u string
是否为false


您必须以字符串形式将条件传递给函数,以将其作为代码进行计算。

您可以使变量名成为动态的:

if( empty( $_SESSION['group_by_' . $observation_column_name[$i] ] ){
    // ..code..
}

我无法将条件直接写入if语句,因为$observation\u column\u name[]是一个数组,$observation\u column\u num是从数据库获取的变量。$observation\u column\u name[]和$observation\u column\u num是从数据库动态加载的。是否有其他解决方案???eval(\$condition\u string=\)$condition_string\“;”);echo$condition_string;返回:
empty(group_by_Name)&&empty(group_by_Email)&&empty(group_by_Address)&&empty(group_by_Age)&&empty(group_by_Contact)
而不是这个
empty($_会话[group_by_Name])&&empty($_会话[group_by_Email])&&empty($_会话[group_by_Email])&&empty($_会话[group_by_地址])&&empty)($\u SESSION[groupu by_Age])&empty($\u SESSION[groupu by_Contact])
if语句必须在所有会话变量$\u SESSION['groupu by_Name']、$\u SESSION['groupu by_Email']、$\u SESSION['groupu by_Address']、$\u SESSION['groupu by_Age']和$\u SESSION['groupu by_Contact]为空时执行。如果我使用if(empty($\u SESSION SESSION['group_by_u.'.$observation_column_name[$i]]){/..code..}然后,如果会话变量中的任何一个empty@Amrit我认为你没有选择解决这个问题的最佳方法。