在php if condition中动态添加条件



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

我正在尝试类似的代码

 $day_difference = "some integer value";
  if(sheduled_time == 'evening'){
        $condition = '>';
    }else{
      $condition = '==';
    }

然后

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

gerald解决方案的替代方案;我建议您使用一个功能,使用开关箱操作验证输入:

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

您需要的是eval()方法。

$var1 = 11;
$var2 = 110;
$cond1 = '$var1 > $var2';
$cond2 = '$var1 < $var2';
if(eval("return $cond1;")){
   echo $cond1;
}
if(eval("return $cond2;")){
   echo $cond2;
}

正如下面公正地指出的,在使用此方法时,您应该采取必要的预防措施

这不是这样做的方法
只需定义一个函数,如果满足所需条件,该函数将返回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";
}

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

你可以检查php中的eval邪恶是什么时候?

您可以使用以下脚本:

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

感谢您帮助我解决问题

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

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

最新更新