-3

这是常量:

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

4

2 回答 2

0

我真的没有得到这个代码示例。您是从数据库中获取常量值还是只是一个告诉您要添加哪个常量的公式?

无论如何,代码示例不会给你 8 因为你把它作为字符串给 $formula。

尝试从那里删除 "。如果这不起作用,请尝试将常量转换为这样的 int。

$formula = (int) CONST1 + (int) CONST2
于 2013-11-05T07:22:23.520 回答
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,然后借助上面的代码从字符串中获取常量的值

于 2013-11-05T07:19:54.547 回答