2017-07-16 16 views
1

私はこの機能が一度だけ宣言されていることがわかります。私はこのエラーが(calcPercentagesを再宣言することはできません取得)、それはそれは誤った機能が含まれていPHPは機能を再宣言できません

正しい関数である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に手続きから移動していますし、それで出始めています、私を許しなさい。

答えて

6

auditStatsを呼び出すたびに再宣言されるので、auditStats関数内にcalcPercentagesと宣言します。

calcPercentagesauditStatsの外側に移動します。

+1

ありがとう、別のレッスンを学んだ:) – tatty27

2

PHPでは、JSとは異なり、関数は他の関数にとって決してローカルではないので、function calcPercentages...という行に達すると、calcPercentagesというグローバル関数が作成されます。もう一度実行すると、同じ名前の別のグローバル関数を作成しようとしていますが、エラーが発生します。

宣言をグローバルに移動するには、in a class or objectと入力するか、anonymous functionとします。

+0

ありがとう、いくつかの有用な情報:) – tatty27

関連する問題