根據用戶輸入,我執行查詢,然後對結果進行一些數學運算。我的問題是,我將數學存儲在一個變量中,無法將其作爲數學讀取。例如:php - 使用變量作爲公式
$Math=($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02'])//this is constructed upon user input
echo "<table>";//this is coded after Select, where $ArryDBs is generated
for ($i=0; $i<$num_rows; $i++){
echo "<tr>";
echo "<td> 1) From Math: ".$Math."</td>";
echo "<td> 2) Direct: ".($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02'])."</td>";
echo "</tr>";
}
echo "</table>";
輸出如下(注意,表達式1)和2)是相同的):
1) From Math: ($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02']) 2) Direct: 8.23018
1) From Math: ($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02']) 2) Direct: 12.46399
1) From Math: ($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02']) 2) Direct: 15.08906
值2)直接就是我想要的。但它根據用戶輸入而改變。這就是爲什麼我將表達式存儲在變量中。它從字面上讀取字符串。所有相關的問題都表明使用eval(),儘管總是人(和手冊本身)不鼓勵它的使用。
我的問題:我如何獲得$ Math讀取作爲執行操作?
如果我用浮點數代替上面的變量,我會得到預期的輸出:1)從數學:67 2)直接:67'。你有沒有嘗試將你的變量轉換爲正確的數值? – Crackertastic 2014-10-08 17:57:20
@Crackertastic:我不確定如果是正確的數值,並且會檢查我的代碼。爲了簡單起見,我直接寫了$ Math,但它實際上是用'$ ForMath [$ key]。=「\ $ ArrayDBs [\ $ i] ['」。$ key。「_」。$ matches [1] [$ n]。「']」; $ Math = array_values($ ForMath);'並且我的問題的代碼被稱爲$ Math [0]或類似的。無論如何,當迴應「閱讀」是與我想評估的表達相同。我會仔細審查我的代碼(我絕不是專家......)。謝謝。 – CMArg 2014-10-08 18:28:35
通常,PHP對於在算術之前認爲字符串「認爲」是數字併爲您進行投射很好,但PHP並不完美。你總是可以嘗試在變量前面放置'(float)'或'(int)'來告訴PHP來投射一個變量。 PHP的[settype()](http://php.net/manual/en/function.settype.php)函數也很有幫助,因爲它會返回一個布爾值,讓您知道投射是否成功。 – Crackertastic 2014-10-08 18:36:31