簡體   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