如何根据不同的场景检查if语句中的不同条件

时间:2017-06-08 10:39:44

标签: php

我想根据不同的场景检查if语句中的不同条件(将InfoPtr值设为$status'Y')。请检查下面的代码并告诉我这里的问题。

'N'

此代码无效,因为$fstrto = "10"; $cstrto = "7"; if($status == 'N') { $cond = "$fstrto <= $cstrto"; } else { $cond = "$fstrto >= $cstrto"; } if($cond) { echo "Success"; } 为变量。

5 个答案:

答案 0 :(得分:2)

删除引号。如果输入是$fstrto = intval($fstrto);中的字符串,则使用intval / doubleval。

$fstrto = 10; 
$cstrto = 7;
if($status == 'N')
{
    $cond = $fstrto <= $cstrto;
}
else
{
    $cond = $fstrto >= $cstrto;    
}
if($cond)
{
    echo "Success";
}

为什么会起作用:$cond被赋予布尔表达式的值,其值可以是truefalseif($cond)只会检查$condtrue还是false

答案 1 :(得分:1)

需要做的是使用字符串作为php代码使用

eval - 将字符串评估为PHP代码

使用下面的代码像魅力一样工作:

    $fstrto = "10"; 
    $cstrto = "7";
    if($status == 'N')
    {
    $cond = "$fstrto <= $cstrto";
    }
    else
    {
    $cond = "$fstrto >= $cstrto";    
    }
    if(eval("return $cond;"))
    {
    echo "Success";
    }

重要:

强烈建议不要使用eval

永远不要在没有消毒的情况下通过POST / GET使用带有参数的eval

When is eval evil in php?

答案 2 :(得分:0)

"$fstrto <= $cstrto"现在是一个字符串比较语句。

$fstrto = "10"; 
$cstrto = "7";
if( ($status == 'N' && $fstrto <= $cstrto) || ($status != 'N' && $fstrto >= $cstrto) )
{
  echo "Success";
}

答案 3 :(得分:0)

可能会将其转换为一个函数,如下所示汇总到switch语句中:

function evaluateCondition($status, $a, $b) {
    switch ($status) {
        case 'Y':
            return $a >= $b;
            break;
        case 'N':
            return $a <= $b;
            break;
        default:
            // Error Log. Unknown Status.
    }
}

如果必要的话,任何未来的添加都可以附加到switch语句中,如果它更复杂,每个案例都会返回一个单独的function()来提高可读性。

就当前版本而言,您可以像这样使用它:

$result = evaluateCondition('Y', 5, 6);
var_dump($result); // bool(false)

希望有所帮助。

答案 4 :(得分:-2)

$fstrto = "10"; 
$cstrto = "7";
$cond = false;
if($status == 'N')
{
    if($fstrto <= $cstrto){
        $cond = true;
    }

}
else
{
    if($fstrto >= $cstrto){
        $cond = false;
    }
}
if($cond)
{
echo "Success";
}