-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

このコードを試してください

<?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 に答える
0

このコード例はよくわかりません。データベースから定数値を取得しますか、それとも追加する定数を示す式だけですか?

とにかく、コード例では 8 が得られません。これは、$formula に文字列として渡すためです。

そこから " を削除してみてください。それがうまくいかない場合は、定数を次のように int にキャストしてみてください。

$formula = (int) CONST1 + (int) CONST2
于 2013-11-05T07:22:23.520 に答える