Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据不同的场景在if语句中检查不同的条件_Php - Fatal编程技术网

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

Php 如何根据不同的场景在if语句中检查不同的条件,php,Php,我想根据不同的场景在if语句中检查不同的条件(将$status值设置为'Y'或'N')。请检查下面的代码,并让我知道这里的问题 $fstrto = "10"; $cstrto = "7"; if($status == 'N') { $cond = "$fstrto <= $cstrto"; } else { $cond = "$fstrto >= $cstrto"; } if($cond) { echo "Success"; } $fstrto=“

我想根据不同的场景在if语句中检查不同的条件(将
$status
值设置为
'Y'
'N'
)。请检查下面的代码,并让我知道这里的问题

$fstrto = "10"; 
$cstrto = "7";
if($status == 'N')
{
    $cond = "$fstrto <= $cstrto";
}
else
{
    $cond = "$fstrto >= $cstrto";    
}
if($cond)
{
    echo "Success";
}
$fstrto=“10”;
$cstrto=“7”;
如果($status='N')
{
$cond=“$fstrto=$cstrto”;
}
如果($cond)
{
呼应“成功”;
}

此代码不起作用,因为它需要$fstrto删除引号。如果输入是字符串,请使用intval/doubleval,如
$fstrto=intval($fstrto);

$fstrto=10;
$cstrto=7;
如果($status='N')
{
$cond=$fstrto=$cstrto;
}
如果($cond)
{
呼应“成功”;
}
工作原理:
$cond
被分配一个布尔表达式的值,其值可以是
true
false
如果($cond)只检查
$cond
是否为
$fstrto=“10”;
$fstrto = "10"; 
$cstrto = "7";
$cond = false;
if($status == 'N')
{
    if($fstrto <= $cstrto){
        $cond = true;
    }

}
else
{
    if($fstrto >= $cstrto){
        $cond = false;
    }
}
if($cond)
{
echo "Success";
}
$cstrto=“7”; $cond=false; 如果($status='N') { 如果($fstrto=$cstrto){ $cond=false; } } 如果($cond) { 呼应“成功”; }
“$fstrto需要做的是将字符串作为php代码使用

eval-将字符串作为PHP代码计算

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

    $fstrto = "10"; 
    $cstrto = "7";
    if($status == 'N')
    {
    $cond = "$fstrto <= $cstrto";
    }
    else
    {
    $cond = "$fstrto >= $cstrto";    
    }
    if(eval("return $cond;"))
    {
    echo "Success";
    }
$fstrto=“10”;
$cstrto=“7”;
如果($status='N')
{
$cond=“$fstrto=$cstrto”;
}
如果(eval(“返回$cond;”)
{
呼应“成功”;
}
重要:

高度不鼓励使用eval

在未对参数进行消毒的情况下,切勿通过POST/GET将eval与参数一起使用


可能会将其转换为一个函数,并将其转换为一个
开关
语句,如下所示:

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

希望能有所帮助。

我认为
$cond
应该是
真的
如果
$fstrto>=$cstrto
。。。另外,我将使用默认值
false
定义
$cond
,以防止出现警告。虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期值。如果您要提到
eval()
,您还应该提到为什么接受用户输入是一个可怕的想法——以防OP想将其用于可能被利用的东西
function evaluateCondition($status, $a, $b) {
    switch ($status) {
        case 'Y':
            return $a >= $b;
            break;
        case 'N':
            return $a <= $b;
            break;
        default:
            // Error Log. Unknown Status.
    }
}
$result = evaluateCondition('Y', 5, 6);
var_dump($result); // bool(false)