使用GET将参数传递给PHP函数

使用GET将参数传递给PHP函数,php,forms,Php,Forms,继承了一个运行计算器表单的网站,当主机将服务器从5.6更新到PHP7.2时,该网站出现了故障。查看错误日志,问题似乎在于将$data正确地传递给函数 我得到的错误是 PHP致命错误:Uncaught ArgumentCounter错误:参数太少,无法使用函数CalculateTleFee() 它说它得到1个参数,但期望2个。在我的浏览器中,我可以看到URL上的500错误,它清楚地显示了数据的2个值 我最初的猜测是GET工作不正常,或者它没有将数据正确地构建到数组中 这里是有问题的PHP 这一切都

继承了一个运行计算器表单的网站,当主机将服务器从5.6更新到PHP7.2时,该网站出现了故障。查看错误日志,问题似乎在于将$data正确地传递给函数

我得到的错误是

PHP致命错误:Uncaught ArgumentCounter错误:参数太少,无法使用函数CalculateTleFee()

它说它得到1个参数,但期望2个。在我的浏览器中,我可以看到URL上的500错误,它清楚地显示了数据的2个值

我最初的猜测是GET工作不正常,或者它没有将数据正确地构建到数组中

这里是有问题的PHP

这一切都始于:

$action = $_GET['action'];

$json_data = array();
$json_data['error_code'] = '0';

// Determine the action that the javascript is attempting to perform
switch ($action) {
    case "display_main_menu":
    case "back":
        $json_data['html'] = display_main_menu();
        break;
    case "display_purchase_example":
        $json_data['html'] = display_purchase_example();
        break;
    case "display_refinance_example":
        $json_data['html'] = display_refinance_example();
        break;
    case "calculate":           
        $post_data = $_GET['data'];

        $json_data['calc_data'] = calculate($post_data);
        break;
}

echo json_encode($json_data);
然后,表单将发送:

urltophp.php?action=calculate&data%5B%5D=80000&data%5B%5D=90000
以下是计算函数:

function calculate($data) { 

    $calc_data = array();
    $title_premium = CalculateTitleFee(floatval($data[1])) + CalculateLoanPolicy(floatval($data[0]));
    $title_premium_refi = CalculateTitleFeeRefi(floatval($data[0]));
}
这个函数有很多我没有复制的地方,但是错误发生在CalculateTitleFee()函数上。希望解决这个问题,其他一切都能正常工作

====更新=====

这里是CalculateTleFee函数

function CalculateTitleFee ($purchase_price, $loan_amount){
    $title_premium0 = 0;

    if ($purchase_price <= "100000") {
        $title_premium0 = ((ceil((($purchase_price-30000)*0.00375)+180)-(ceil((($purchase_price-30000)*0.00325)+150)))+100);
    }
    else if ($purchase_price <= "200000") {
        $title_premium0 = ((ceil((($purchase_price-100000)*0.00275)+442.5)-(ceil((($purchase_price-100000)*0.00225)+377.5)))+100);
    }
    else if ($purchase_price <= "300000") {
        $title_premium0 = ((ceil((($purchase_price-200000)*0.002)+717.5)-(ceil((($purchase_price-200000)*0.00175)+602.5)))+100);
    }
    else if ($purchase_price <= "10000000") {
        $title_premium0 = ((ceil((($purchase_price-200000)*0.002)+717.5)-(ceil((($purchase_price-200000)*0.00175)+602.5)))+100);
    }

    return $title_premium0;

    }
函数计算费用($purchase\u price,$loan\u amount){
$title_premium0=0;

如果($purchase\u price,这不是因为
$\u GET
。这一直是个问题,但只有在更新到PHP 7时才开始引发异常。用于引发警告的参数太少


calculate()
函数中,您仅使用一个参数调用
calculateitlefee

CalculateTitleFee(floatval($data[1]))

CalculateTleFee()
确实接受第二个参数,但它从未在函数中使用。从函数定义中删除该参数应该是安全的。

CalculateTleFee
实际上在该
calculate()中只得到一个参数
function.ArtisticPhoenix-导致相同的错误。PHP致命错误:未捕获的参数计数器错误:函数CalculateTleFee()的参数太少,在第147行传入了1个/calculator/calculator.PHP,在/calculator/calculator.PHP:78\n堆栈跟踪:\n#0/calculator/calculator.PHP(147):CalculateTleFee(90000)\n#1/calculator/calculator.php(25):计算(数组)\n#2{main}\n在第78行的/calculator/calculator.php中抛出,参考:calculator/calculator.htmlwell
calculateTlefee()
clear需要两个参数,你给它一个,所以嗯…这是有意义的。不过,我认为函数在过去的计算中是正确的。我已经将该函数添加到了我的OP中。希望这有助于诊断。谢谢!找到了。通过…查看函数…你说的。哈!IDK为什么它需要两个变量,而它是o只在函数中使用一个。谢谢!啊,刚刚更新了答案,同时说:-)可能需要该变量的功能被移动到了
CalculateLoanPolicy
函数中,他们忘记删除该变量了?谁知道呢