据我所知,该函数只声明一次。但我得到这个错误无法重新声明calcPercentages(),它告诉我它在第17行声明是正确的
包含错误功能的函数......
function auditStats($audit){
$mysqli = dbConnect();
$audit_id = $audit;
$result = $mysqli->query("SELECT imageGrade, SUM(imageGrade=1) AS grade1, SUM(imageGrade=2) AS grade2, SUM(imageGrade=3) AS grade3, COUNT(*) AS total_imgs FROM image WHERE type != 'standard' and auditID ='$audit_id'")or exit("Error code ({$mysqli->errno}): {$mysqli->error}");
$row = $result->fetch_assoc();
$grade1 = $row['grade1'];
$grade2 = $row['grade2'];
$grade3 = $row['grade3'];
$totalImgs = $row['total_imgs'];
function calcPercentages($grade, $total){
$percent = round(($grade / $total) * 100,2);
return $percent;
}
if ($totalImgs != 0){
$percent_1 = calcPercentages($grade1, $totalImgs);
}
$return_array = [
'total'=>$totalImgs,
'percent_1'=>$percent_1
];
return $return_array;
}
除了auditStats函数之外,该函数不会被调用,并且使用
在页面下方进一步调用结果$percent_1 = auditStats($auditID)[percent_1];
请原谅我,如果我犯了明显的新手错误,我正在从程序转到OOP,我刚刚开始使用它。
答案 0 :(得分:6)
您在calcPercentages
函数中声明auditStats
,因此每次调用auditStats
时都会重新声明。
将calcPercentages
移到auditStats
之外。
答案 1 :(得分:2)
在PHP中,与JS不同,函数从不是另一个函数的本地函数,因此当到达行function calcPercentages...
时,您将创建一个名为calcPercentages
的全局函数。当它再次运行时,您正在尝试创建另一个具有相同名称的全局函数,并且您会收到错误。
将声明移到全球范围内,将其设为in a class or object或制作anonymous function。