如果条件,在php中动态添加条件

时间:2012-08-24 13:51:01

标签: php

我正在尝试在if条件中动态添加条件。但它没有用。请帮我解决这个问题。

我正在尝试这样的代码

 $day_difference = "some integer value";

  if(sheduled_time == 'evening'){
        $condition = '>';
    }else{
      $condition = '==';
    }

然后

if($day_difference.$condition.  0){ 
  echo "something";       
 }else{
   echo "h";
 }

5 个答案:

答案 0 :(得分:5)

杰拉尔德解决方案的替代方案;我建议您使用一个使用switch-case操作验证输入的函数:

function evaluate ($var1, $operator, $var2)
{
    switch $operator
    {
         case: '<': return ($var1 < $var2);
         case: '>': return ($var1 > $var2);
         case: '==': return ($var1 == $var2);
    }
    return null;
}

答案 1 :(得分:4)

您需要的是eval()方法。

$var1 = 11;
$var2 = 110;
$cond1 = '$var1 > $var2';
$cond2 = '$var1 < $var2';

if(eval("return $cond1;")){
   echo $cond1;
}

if(eval("return $cond2;")){
   echo $cond2;
}

如下所述,使用此方法时应采取必要的预防措施!

答案 2 :(得分:3)

这不是这样做的方法。
只需定义一个函数,如果满足所需条件,则该函数返回true 例如,我们可以定义函数decide,它接收两个参数$day_difference$scheduled_time

function decide($day_difference, $scheduled_time)
{
    if($scheduled_time == 'evening')
    {
        return $day_difference > 0;
    }
    else
    {
        return $day_difference == 0;
    }
}

并像这样使用它:

if( decide($day_difference, $scheduled_time) )
{ 
    echo "something";       
}
else
{
    echo "h";
}

答案 3 :(得分:1)

根据您的要求,可以使用PHP eval()函数来完成,我不建议仅在必要时使用它。

您可以查看When is eval evil in php?

您可以改用以下脚本:

if(  $sheduled_time == 'evening' && $diff > 0 )
{
    echo "This is the Evening and the Difference is Positive";
}
else if($diff == 0)
{
    echo "This is not evening";
}

答案 4 :(得分:0)

谢谢你帮助我解决我的问题

我用另一种方式解决了这个问题

 $day_difference = "some integer value";

 $var1 = false ;
if($sheduled_time == 'evening_before'){ 
    if($day_difference > 0 ){ 
        $var1  = true ;
    }
}else{
    if($day_difference == 0 ){ 
        $var1  = true ;
    }
}

if($var1 === true){ 
  echo "something";       
}else{
  echo "h";
}