我正在尝试在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";
}