繁体   English   中英

PHP无法重新声明功能

[英]Php can't redeclare function

据我所知,该函数仅声明一次。 但我收到此错误,无法重新声明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,并且刚开始。

您在auditStats函数内声明calcPercentages ,因此每次调用auditStats时都会重新声明它。

移动calcPercentages之外auditStats

在PHP中,与JS不同,一个函数永远不会局部存在于另一个函数中,因此,当到达行function calcPercentages...时,您将创建一个名为calcPercentages的全局函数。 当它再次运行时,您试图创建另一个具有相同名称的全局函数,并且会收到错误消息。

要么将声明全局移出外部,要么将其放入类或对象中,要么使它成为匿名函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM