我在字符串中有一个运算符。
$c['operator'] = ">=";
if($sub_total.$c['operator'].$c['value'])
{
echo $sub_total.$c['operator'].$c['value'];
}
它获得的输出是20610>=30000
我在字符串中有一个运算符。
$c['operator'] = ">=";
if($sub_total.$c['operator'].$c['value'])
{
echo $sub_total.$c['operator'].$c['value'];
}
它获得的输出是20610>=30000
我会将可能的运算符放在switch
:
$result = null;
switch($c['operator'])
{
case '>=':
$result = $sub_total >= $c['value'];
break;
case '<=':
$result = $sub_total <= $c['value'];
break;
// etc etc
}
这比使用 安全得多eval
,并且具有清理输入的额外好处。
字符串不能被解释为 php 代码,除非你使用eval
(小心它)。
您在if
语句示例中所做的是连接字符串,并且因为连接后的字符串不是null
它的评估结果true
,所以if
执行语句。
在您的情况下,解决方案是查看使用了哪个运算符,就像@adam 在他的解决方案中所写的那样。
顺便说一句,在字符串中包含逻辑(可能在脚本之外)不是一个好主意。
$sub_total.$c['operator'].$c['value']
不是比较而是字符串连接。PHP 中填充的字符串始终为真,因此if
- 语句始终为true
.
使用PHP eval来评估您构建的代码。
$c['operator'] = ">=";
if(eval($sub_total.$c['operator'].$c['value']))
{
echo $sub_total.$c['operator'].$c['value'];
}
您不能在 PHP 中这样做,您应该执行以下操作:
if ($c['operator'] == '>=' and $sub_total >= $c['value']) {
// Do something
} else if ($c['operator'] == '<=' and $sub_total <= $c['value']) {
// Do something else
} // etc...
看一下 eval 方法。虽然很危险