我正在尝试在if条件中动态添加条件。但它没有用。请帮我解决这个问题。
我正在尝试这样的代码
$day_difference = "some integer value";
if(sheduled_time == 'evening'){
$condition = '>';
}else{
$condition = '==';
}
然后
if($day_difference.$condition. 0){
echo "something";
}else{
echo "h";
}
答案 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";
}