Используйте мою переменную php в качестве формулы для вычисления чего-либо

0

Я работаю в системе счетов-фактур, которая должна вычислять разные формулы для каждого продукта, которые должны быть заполнены стоимостью Width, Height и Material.

Я сделал базу данных, где храню

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 или * s?
  • 0
    * но сайт не показывал их, и я заменил его.
Показать ещё 5 комментариев
Теги:

2 ответа

1

Функция eval() ожидает, что строковый параметр является правильной инструкцией кода.

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

даст вам ошибку, потому что php не может оценить эту строку. Однако,

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

будет правильно оценивать выражение.

Вы должны использовать:

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

Использование eval неверно. Строка, переданная eval, должна быть действительной PHP-кодом. то есть:

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

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

  • 1
    спасибо, я никогда не использовал eval (); Благодарю.
  • 0
    теперь он дает $total = (10*10)*1000
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню