У меня строка такая: $string = "a + b + c";
, Теперь я хотел бы рассчитать строку как сумму.
Например:
$a = 10; $b = 10; $c = 10; $string = "a + b + c"; echo "Result is ".$string; output-> Result is 30 $string = "a + b * c"; echo "Result is ".$string; output-> Result is 110
заранее спасибо
Переменные в вашей строке не имеют знака доллара. Я написал и протестировал скрипт для вас, который добавляет эти знаки к переменным, а затем анализирует строку как PHP-код, используя функцию eval()
.
$a = 10; $b = 10; $c = 10; $string = "a + b + c"; $result = eval('return ' . preg_replace('/([a-zA-Z0-9])+/', '\$$1', $string) . ';'); echo $result;
Это выведет 30
.
На ваш вопрос, возможно, уже был дан ответ на StackOverflow:
Как оценить формулу, переданную как строку в PHP?
Однажды я сделал калькулятор калькулятора .
Мой стандартный ответ на этот вопрос всякий раз, когда он возникает:
Не используйте eval (особенно, поскольку вы заявляете, что это пользовательский ввод) или изобретайте колесо, написав собственный анализатор формул.
Взгляните на класс evalMath на PHPClasses. Он должен делать все, что вы просите, в безопасной песочнице.
ты можешь сделать:
$string = "$res = $a + $b + $c;"; eval($string) echo($res);