2013-04-10 122 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'); 

抛出异常,不仅让你以后(不可能出现致命错误)抓住它,但它也将显示一个回溯,使您可以更轻松地找到第二次执行文件的位置(以及为什么)。

如果您不确定该结果,还可暂时否定条件并在第一次加载函数时引发异常。

相关问题