这是一个奇怪的。我正在尝试使用列中的数据作为运算符和值。我可以将条件和值分开(为了更好的数据类型使用),但我的问题仍然存在。
第1栏数据:50,3,70,2
第2栏数据:< 1,> = 5,< = 7,> 1
我想构建一个如下所示的IF语句:
if ($column1 >= 5){} -Where >=5 is from column 2.
条件和价值来自上面的列。这甚至可能吗?
答案 0 :(得分:0)
理智的解决方案是创建一个简单的解析器/评估引擎。 E.g:
$var1 = '50';
$var2 = '< 1';
if (!preg_match('/(\w+)\s*(\d+)/', $var2, $operands)) {
throw new InvalidArgumentException("Invalid expression '$var2'");
}
switch ($operands[1]) {
case '<' :
return $var1 < $operands[2];
case '<=' :
return $var1 <= $operands[2];
...
default :
throw new InvalidArgumentException("Unsupported operator '$operands[1]'");
}
另请参阅此问题是否符合您的需求:http://symfony.com/doc/current/components/expression_language/introduction.html#how-can-the-expression-engine-help-me