这是常数:
define('Qc', 1);
define('D1', 1);
define('D2', 1);
define('S1D1', 1);
define('E1D1', 1);
define('E1D2', 1);
define('An', 1);
define('D3', 1);
公式来自数据库:
$formula = "Qc + D1 + D2 + S1D1 + E1D1 + E1D2 + An + D3";
预期结果:8
答案 0 :(得分:0)
试试此代码
<?php
$formula = "Qc + D1 + D2 + S1D1 + E1D1 + E1D2 + An + D3";
$formulaBreak = explode('+',$formula);
$val = 0;
foreach ($formulaBreak as $bk) {
if (defined($bk)) {
$val += (int)constant( trim($bk) );
}
}
echo $val;
?>
PHPFiddle http://phpfiddle.org/lite/code/mau-z2w
重要:强>
关键是你可以通过带
的字符串获取常量值constant( 'STRING' );
正如Jobaer Shuman在评论中定义的那样,公式可以是任何格式,您可以解析公式取出variables
然后在上面的代码的帮助下从字符串中获取常量的值< / p>
答案 1 :(得分:0)
我真的没有这个代码示例。您是从数据库中获取常量值还是只是一个告诉您要添加哪个常量的公式?
无论如何,代码示例不会给你8,因为你将$ formula作为字符串。
尝试从那里删除“。如果这不起作用,请尝试将常量转换为这样的int。
$formula = (int) CONST1 + (int) CONST2