2013-04-10 67 views
1
中聲明的

得到了以下函數,並且getteampoints值沒有在之前的任何地方聲明過。試圖遵循其他redececlare錯誤問題,但沒有任何工作。我該如何解決這個問題?致命錯誤:無法重新聲明getteampoints()(先前在

function getTeamPoints($team) 
    { 
     $query = mysql_query("SELECT * FROM Team_comp WHERE t_id='$team'"); 
     $team_array = array(); 

     while($a = mysql_fetch_array($query)) 
     { 
      $team_array = array(   'home_won' => $a['home_win'], 
              'home_draw' => $a['home_tie'], 
              'home_lost' => $a['home_lost'], 
              'away_won' => $a['away_win'], 
              'away_draw' => $a['away_tie'], 
              'away_lost' => $a['away_lost'], 
              'home_games'=> $a['home_games'], 
              'away_games'=> $a['away_games']); 
     } 

     return $team_array; 
    } 

    function calculateTeamPoints($team, $type) 
    { 
     $teamPts = getTeamPoints($team); 

     if($type == 'home') 
     { 
      $homem = $teamPts['home_games']; 
      $homew = $teamPts['home_won']; 
      $percent = ($homew * 100)/$homem; 

      $remaining = $homem - $homew; 

      $per = ($remaining * 100)/$homem; 
      $percent += $per/2; 
     } 
     elseif($type == 'away') 
     { 
      $homem = $teamPts['away_games']; 
      $homew = $teamPts['away_won']; 
      $percent = ($homew * 100)/$homem; 

      $remaining = $homem - $homew ; 

      $per = ($remaining * 100)/$homem; 
      $percent += $per/2; 
     } 

     return $percent; 
    } 

    function getpercent($hometeamid, $awayteamid) 
    { 
     $hometeampts = calculateTeamPoints($hometeamid, 'home'); 
     $awayteampts = calculateTeamPoints($awayteamid, 'away'); 


     $homepercent = floor(($hometeampts - $awayteampts) + 50); 
     $awaypercent = 100-$homepercent; 


    } 

    //demo 
    getpercent($hometeamid, $awayteamid); 
    ?> 
+1

你是否在任何地方包含這個函數文件?如果是,則嘗試使用'include_once'。 – Rikesh 2013-04-10 10:40:39

+0

是你在這個腳本中包含任何php腳本。 – Bharanikumar 2013-04-10 11:12:59

+0

當您嘗試定義已定義的函數時,通常會發生這種情況。如Rikesh所說,使用include_once。 – 2014-01-25 08:16:17

回答

3

推杆的功能是如何內getTeamPoints IF條件..

if(!function_exists('getTeamPoints')){ 
    function getTeamPoints().... 

} 

它不可能太申報1個功能不止一次!

你必須如果你聲明超過1次,寫入不同的名字,如果你只包含該文件超過1次(這是錯誤的..)這個IF函數存在檢查將工作正常。

+0

謝謝,它做到了! – 2013-04-10 10:46:18

+0

@GamblerHeaven - 如果上述技巧解決您的問題,請投票。 – 2013-04-10 10:50:34

+0

你***應該***防止條件函數聲明在這裏建議。它來與高價格。相反,在故障排除/調試中使用'function_exists'函數來找出最初導致問題的原因。請參閱http://stackoverflow.com/a/15923978/2261774 – 2013-04-10 11:03:01

0

看到一個函數redeclare錯誤是您已經第二次直接或間接包含同一個文件的信號。

除了錯誤信息本身,這表示應用程序工作流程中存在問題。

最直接的解決方案是找出何時以及爲什麼第二次加載函數,然後修復工作流程。

你可以找到更多與喜歡的東西:

if(!function_exists('getTeamPoints')) { 
    throw new Exception('Function getTeamPoints() already declared.'); 
} 

include('getteampoints.php'); 

拋出異常,不僅讓你以後(不可能出現致命錯誤)抓住它,但它也將顯示一個回溯,使您可以更輕鬆地找到第二次執行文件的位置(以及爲什麼)。

如果您不確定該結果,還可暫時否定條件並在第一次加載函數時引發異常。

相關問題