2013-11-05 33 views
-3

這裏是常量:如何從PHP中的字符串返回常量值?

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

$公式爲字符串,是來自於管理設置(數據庫)。這個公式可能例如:「100 *(Qc + D1)/ 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舒曼在點評中定義的公式可以是任何格式獲得恆定的值,可以解析公式取出variables,然後在上面的代碼幫助下得到該字符串的常量值

+0

我會在foreach中添加一個if(defined($ bk)),以保證安全。 – Jite

+0

ofcourse ..你是對@Jite – zzlalani

+0

謝謝。這對我很有用。但如果改變邏輯運算符有什麼解決方案?例如公式更改爲$ formula =「100 *((Qc + D1 + D2) - E1D1) –

0

我真的沒有看到這個代碼示例。你是從數據庫中獲得常量值還是隻是一個公式,它告訴你要添加哪個常量?

無論如何,代碼示例不會給你8,因爲你把它作爲字符串給$公式。

嘗試刪除「從那裏。如果不行嘗試鑄造常量這樣一個int。

$formula = (int) CONST1 + (int) CONST2 
+0

常量值是預定義的。公式來自數據庫的字符串。 –

相關問題