2014-12-06 81 views
0

我在發票系統中工作,必須爲每個產品計算不同的公式,這需要用寬度,高度和材料成本填充。使用我的php變量作爲公式來計算東西

我確實在那裏我存儲

t_title -> "Curtain 1" 

t_formula -> "({ANCHO}*{ALTURA})*{PRECIO}" 

一個數據庫,然後PHP做到這一點:

<?php 
    $ancho = str_replace("{ANCHO}", $_POST['ancho'], $articulo['t_formula']); 
    $alto = str_replace("{ALTURA}", $_POST['alto'], $ancho); 
    $precio = str_replace("{PRECIO}", $_POST['precio'], $alto); 
    $total = $precio; echo eval($total); 
?> 

,結果是不會放棄任何東西,而是一個空白。

我該如何讓它工作?我知道,PHP不能從變量作爲PHP計算,但我找不到另一種方式來做到這一點。

+0

是否't_formula'有它的'x's或'*單曲? – Mureinik 2014-12-06 16:03:55

+0

*但該網站沒有顯示它們,我將其替換。 – davco98 2014-12-06 16:05:18

+1

'*'是markdown中的格式化元素。我編輯了這個問題,以便正確顯示變量。 – Mureinik 2014-12-06 16:06:47

回答

0

您使用eval是錯誤的。傳遞給eval的字符串必須是有效的PHP代碼。即:

$precio2 = '$total = '.$precio.';'; 
eval($precio2); 
echo $total; 

http://php.net/manual/en/function.eval.php

+1

謝謝,我從來沒有用過eval();謝謝。 – davco98 2014-12-06 16:14:03

+0

現在它給出'$ total =(10 * 10)* 1000' – davco98 2014-12-06 16:15:44

+0

@ davco98注意編輯答案,我在最後添加了';'以使字符串成爲有效的PHP代碼。 – SaidbakR 2014-12-06 16:17:31

1

的eval()函數期望字符串參數是一個正確的代碼語句。

$str = '(10*10) * 1000'; 
echo eval($str); 

會給你一個錯誤,因爲PHP無法評估該字符串。然而,

$str = 'return (10*10) * 1000;'; 
echo eval($str); 

將正確計算表達式。

你應該使用:

$total = 'return ' . $precio . ';'; 
echo eval($total);