我有一个像这样的变量
$string = "0>0.1";
我想在像这样的if循环中评估这个
if($string)
{
///something
}
但如果我这样做,我会收到错误。怎么去呢
答案 0 :(得分:1)
您不了解评估或字符串的工作原理。 如果你在字符串中放置任何东西,它将不会被评估,但只是从那一刻开始包含该值。
$string = "0>0.1"; // contains "0>0.1"
$bool = 0>0.1; // contains TRUE
IF语句需要布尔值,而不是字符串。
答案 1 :(得分:1)
您可以使用eval
来评估字符串中的内容。请记住,eval
是邪恶的,任何PHP代码都可能在其中。
答案 2 :(得分:0)
你的副本有一些糟糕的建议。这是一个更安全的eval变体,它实际上会评估结果:
$str = "0>0.1";
if (preg_replace('/^(\d+\.?\d*)([><])(\d+\.?\d*)$/e', "$1 $2 $3", $str))
{
请注意,对于"1>2b"
等无效字符串,它仍然会返回true。你需要一个匹配和一个单独的表达式评估。 (在这里写一个虚拟迷你解析器并不困难,但显然对你的问题有点过分了。)