2013-09-22 69 views
0

我有串:如何在字符串中「做數學」?

'$a["m"]*$a["m"]' 

我想做的事情,那美元[「M」]把它(例如5)值和我的程序做了手術(所以這將是5 * 5所以25)。

編輯:

我知道,我能做到這一點,如:

$a["m"].'*'.$a["m"] 

但我不想;)我不能。它會在一段時間內出現在字符串中,然後我計劃(當所有變量都有值時)。

我在做「公式計算器」之類的東西。我寫字符串的公式,現在,當我的程序工作,所有需要的數據設置,我可以計算這個字符串。 所有這些公式將在數據庫中,所以我將它作爲一個字符串。

對不起,我沒有確切地告訴問題是什麼。

+0

查看[eval](http://php.net/manual/en/function.eval.php)。 –

+0

@MartyMcVry和你爲什麼會建議這樣一個糟糕的功能使用? –

+0

@DarylGill因爲他想在一個字符串中運行代碼。我知道還有其他(更好的)方法,但如果仔細使用,它不應該構成很大的威脅。 –

回答

2

這就是pow()做:

$a['m'] = pow($a['m'], 2); 

如果你的價值簡直是存儲爲一個字符串,那麼你就需要eval()

$a["m"] = '5'; 
$str = '$a["m"]*$a["m"]'; 
$var = eval("\$result = $str;"); 
echo $result; 

輸出:

25 

再次引述PHP的創建者Rasmus Lerdorf:

如果eval()是答案,那麼你肯定會問錯誤的問題。

對於您的使用,我認爲最好使用WolframAlpha等API。

獲取從這裏開始:http://products.wolframalpha.com/api/libraries.html

+0

是的,eval()是我的問題的答案。但我知道這是非常危險的使用。有沒有什麼只計算Math,不能編輯/運行PHP代碼? – Piotrek

+0

@ Ludwik11:我不認爲這樣的事情存在。但爲什麼你的變量首先存儲爲字符串?如果它只包含數字,那麼使用'eval()'應該是安全的,但是如果腳本涉及到任何地方的用戶輸入,那麼'eval()'是一個**不好的想法。 –

+0

@ Ludwik11:查看我的更新答案。 –

1

你應該看看串聯..下面的例子應該做你在找什麼。

$Var = $a["m"].'*'.$a["m"]; 
+0

請參閱'(所以25 * 5 * 5)。「我不認爲這是OP想要的。 –

+0

它不像你想象的那麼簡單^^我想保留(操作)在一個字符串中,並在「適當的時間」運行它;) – Piotrek

+0

@ Ludwik11定義你的意思是「適當的時間」 –

0

第一雙qoutes "然後單'

$a =$a['m'].' * ' . $a['m']; 

根據您的更新問題:

要顯示在一個字符串的總。

echo "The product of two numbers is:" .$a['m']. '*' .$a['m'] "; 
+0

請查看我的帖子上的'編輯' – Piotrek

+0

查看最新答案 –

相關問題