【问题标题】:Create a calculation formula from form data从表单数据创建计算公式
【发布时间】:2017-01-20 05:02:23
【问题描述】:

我从表单域得到以下信息:

公式只计算一次

(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 (+*(-))*+(*)

【问题讨论】:

  • $result = ($_POST['z'] + $_POST['a'] * ($_POST['s']-$_POST['k'])) * $_POST[ 'd'] + ($_POST['m'] * $_POST['x']);
  • 这不是计算。只能交换数字正确的字母。

标签: php forms calculation


【解决方案1】:

假设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);

【讨论】:

  • 不是 $_POST['A'];它应该是 $_POST['a'];你不应该大写名称字段
  • 谢谢艾哈迈德。计算公式是可变的,请参阅我更新的代码。那是行不通的。
  • @anonym 你不想要最终结果!?你想要代表公式的字符串吗?什么是 $field$formula 变量?你如何使用_calculateFormFields 函数?
  • Ahmad,一个我已经写好的计算函数。我已经发布了输出,见上文。一是数字的顺序不正确,二是所有的算子都是用数字写的。
  • @anonym 告诉我 $field$sFormula ,然后在你的函数中使用它们
【解决方案2】:

使用 $_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);

【讨论】:

    【解决方案3】:

    试试这个:

    <?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);
    

    【讨论】:

    • 您的帖子数组是否如我的回答中所示? @匿名
    • 我已经使用 extract() 函数将值提取到关键变量
    猜你喜欢
    • 2015-04-05
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2011-12-05
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多