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

时间:2019-03-06 23:13:23

标签: php forms

继承了一个运行有计算器形式的网站,该网站在主机将服务器从5.6更新到PHP7.2时中断。查看错误日志,问题似乎在于将$ data正确传递给函数。

我得到的错误是

  

PHP致命错误:未捕获的ArgumentCountError:函数CalculateTitleFee()的参数太少

它表示正在获取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()函数错误。希望能够解决该问题,并使其他所有功能正常运行。

=====更新=====

这是CalculateTitleFee函数。

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;

    }

1 个答案:

答案 0 :(得分:3)

这不是因为pytest-json。这始终是一个问题,但是在您更新到PHP 7时才开始引发异常。用于触发警告的参数太少了as of PHP 7.1 it causes an error

$_GET函数中,您仅用一个参数调用calculate()

CalculateTitleFee

CalculateTitleFee(floatval($data[1])) 确实有第二个参数,但是该函数从未使用过。从函数定义中删除该参数应该是安全的。