致命错误:无法重新声明getteampoints()(之前在[关闭]中声明)

致命错误:无法重新声明getteampoints()(之前在[关闭]中声明)

问题描述:

Got the following function and the getteampoints value wasn't declared anywhere before. Tried to follow other redececlare error problems but none of the worked. How can i fix this?

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);
    ?>

Putt the how function getTeamPoints inside IF condition..

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

}

Its not possible too declare 1 function more than once!

You have to write different name if you declare it more than 1 time, if you just include that file more than 1time (which is wrong..) this IF function exists check will work fine.

Seeing a function redeclare error is a sign that you have included - directly or indirectly - the same file a second time.

Apart from the error message itself, this signals a problem in your application workflow.

The most straight forward solution is to find out when and why the function was loaded a second time and then fixing the workflow.

You can find out more with things like:

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

include('getteampoints.php');

Throwing an exception will not only allow you to catch it later (not possible with a fatal error), but it will also show a backtrace so that you can find out more easily where (and why) the file is executed a second time.

You can also temporarily negate the condition and throw the exception the first time the function is loaded if you're unsure about that end.