使用GET将参数传递给PHP函数
继承了一个运行计算器表单的网站,当主机将服务器从5.6更新到PHP7.2时,该网站出现了故障。查看错误日志,问题似乎在于将$data正确地传递给函数 我得到的错误是 PHP致命错误:Uncaught ArgumentCounter错误:参数太少,无法使用函数CalculateTleFee() 它说它得到1个参数,但期望2个。在我的浏览器中,我可以看到URL上的500错误,它清楚地显示了数据的2个值 我最初的猜测是GET工作不正常,或者它没有将数据正确地构建到数组中 这里是有问题的PHP 这一切都始于:使用GET将参数传递给PHP函数,php,forms,Php,Forms,继承了一个运行计算器表单的网站,当主机将服务器从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.htmlwellcalculateTlefee()
clear需要两个参数,你给它一个,所以嗯…这是有意义的。不过,我认为函数在过去的计算中是正确的。我已经将该函数添加到了我的OP中。希望这有助于诊断。谢谢!找到了。通过…查看函数…你说的。哈!IDK为什么它需要两个变量,而它是o只在函数中使用一个。谢谢!啊,刚刚更新了答案,同时说:-)可能需要该变量的功能被移动到了CalculateLoanPolicy
函数中,他们忘记删除该变量了?谁知道呢