Php 如何根据不同的场景在if语句中检查不同的条件
我想根据不同的场景在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=“
$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)