Создать формулу расчета из данных формы

Я получаю из поля формы следующую информацию:

Только один раз формула для расчета

(z + a * (s-k)) * d + (m * x)

И семь текстовых (входных) полей с этой информацией:

value => 0.5
name => a

value => 10.2
name => z

value => 4
name => x

value => 2
name => s

value => 2
name => d

value => 0.4
name => k

value => 2.1
name => m

Исходя из этой информации, я хотел бы получить этот результат в виде текста для расчета:

(10.2 + 0.5 * (2-0.4)) * 2+ (2.1 * 4)

Мой эксперимент выглядит так:

$sFields => stdClass Object (

[price] => 0.5
[letter] => a

[price] => 10.2
[letter] => z

[price] => 4
[letter] => x

[price] => 2
[letter] => s

[price] => 2
[letter] => d

[price] => 0.4
[letter] => k

[price] => 2.1
[letter] => m
)

$sFormula = $this->formRequestParameter("(z + a * (s-k)) * d + (m * x)");

protected function _calculateFormFields($sFields, $sFormula)
{

$formulaString = preg_replace("/[^a-zA-Z0-9]+/", ',', strtolower($sFormula));

$exLetter = explode(',', $formulaString);

$sPrice = null;

foreach ($exLetter as $sKey => $sVal) {

if (strtolower($sVal) == strtolower($sFields->letter)) {

$sPrice[$sKey] = $sFields->price;

}
}

$buildFormula = str_replace(

$exLetter,
$sPrice,
$sFormula
);

print_r($buildFormula);

// $this->_calculatePrice($buildFormula);
}

И вывод выглядит так. 🙁

10.2 (+*(-))*+(*)
4 (+*(-))*+(*)
2.1 (+*(-))*+(*)
2 (+*(-))*+(*)
2 (+*(-))*+(*)
0.5 (+*(-))*+(*)
0.4 (+*(-))*+(*)

0

Решение

Если предположить, letter Имя поля формы:

$a = $_POST['a'];
$z = $_POST['z'];
$x = $_POST['x'];
$s = $_POST['a'];
$d = $_POST['d'];
$k = $_POST['k'];
$m = $_POST['m'];

$result = ($z + $a * ($s-$k)) * $d + ($m * $x);
0

Другие решения

Получите данные формы, используя метод $ _POST, сохраните их в отдельных переменных и затем рассчитайте результат, используя формулу, как показано здесь:

$a = $_POST['a'];
$z = $_POST['z'];
$x = $_POST['x'];
$s = $_POST['s'];
$d = $_POST['d'];
$k = $_POST['k'];
$m = $_POST['m'];

$result = ($z + $a * ($s-$k)) * $d + ($m * $x);
0

Попробуй это:

<?php

$post_array = ['a' => 0.5,'z' => 10.2,'x' => 4,'s' => 2,'d' => 2,'k' => 0.4,'m' => 2.1]; // $post_array = $_POST;

extract($post_array); // or extract($_POST)

echo ($z + $a * ($s-$k)) * $d + ($m * $x);
0
По вопросам рекламы [email protected]