0

在下面的代码中

$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/>";        }
     }
4

2 回答 2

1

您可以使变量名动态化:

if( empty( $_SESSION['group_by_' . $observation_column_name[$i] ] ){
    // ..code..
}
于 2012-07-14T04:32:24.723 回答
0

您不能将字符串表示形式的条件传递给 if 语句。在您当前的代码中,您只是检查字符串$condition_string 是否为 false

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

于 2012-07-14T04:12:51.207 回答