2011-05-12 97 views
1
function getContactActiveEmails($eid) 
{ 
    global $db; 

    if ($eid) { 
     $sql = "SELECT email FROM activeEmails WHERE id = $eid"; 
     return $db->GetCol($sql); 
    } 
} 

我得到的错误“无法重新声明函数getContactActiveEmails不能重新声明函数错误

它给人的行数是函数的最后一行 - 在}

所有文件被调用require_once。这是整个代码库中唯一定义getContactActiveEmails的地方。为什么是这样?

+0

您是否在不同的文件中使用同名的函数,或者使用这个函数有多个文件副本? – KingCrunch 2011-05-12 17:38:20

+0

也许你是在偶然的地方用关键字“function”调用函数? – 2011-05-12 17:39:47

+0

这是定义getContactActiveEmails的唯一地方。它被称为在其他地方的两个地方。 $ emails = getContactActiveEmails($ this-> recipientID); $ emails = getContactActiveEmails($ eid); – SickHippie 2011-05-12 17:40:42

回答

6

从错误你的函数定义两次非常清楚,因此你得到的错误。

我会建议在声明它之前检查函数是否已经定义。通过@Shakti辛格

if (!function_exists('getContactActiveEmails')) 
{ 
    function getContactActiveEmails($eid) 
    { 
     global $db; 

    if ($eid) { 
     $sql = "SELECT email FROM activeEmails WHERE id = $eid"; 
     return $db->GetCol($sql); 
    } 
    } 
} 
+0

工作正常 - 希望稍后我们能够找出实际问题,但这会让我回到真正的工作。谢谢! – SickHippie 2011-05-12 17:51:33

+0

@Brian:高兴帮助 – 2011-05-12 17:56:51

4

解决方案将工作,但请记住,你正在失去你的代码的控制 - 你不知道这是哪里的功能宣称它有什么回报,所以我建议寻找它

  1. 尝试不区分大小写的搜索,许多文本编辑器和IDE默认搜索区分大小写,您的函数在某处可以声明为getcontactactiveemails
  2. 如果仍然没有运气使PHP评价一下这个功能,使用Reflection扩展

反射的用法示例:

if(function_exists('getContactActiveEmails')){ 
    $myfunc = new ReflectionFunction('getContactActiveEmails'); 
    echo 'Function is declared in '.$myfunc->getFileName(). 
     ' starting from line '.$myfunc->getStartLine(). 
     ' to '.$myfunc->getEndLine(); 
    die; 
} 

更多Reflection

0

我得到了同样的问题。我有一个名为adhoc.inc.php的标准文件,它被导入到我网站上几乎所有的php文件中。由于没有被改变过一夜任何代码所做的,我开始看到的错误

[13-Jul-2013 21:19:22 Australia/Sydney] PHP Fatal error: Cannot redeclare checkloggedin() in /Applications/MAMP/htdocs/mycobber/util/adhoc.inc.php on line 4 

起初,我只得到了它的几个文件,所以我只是注释掉该进口和它的工作。突然之间,再次没有变化,我在每一个我加载的文件中得到这个。我想这不是我,所以我重新启动了我的MAMP服务器(apache和mysql),然后它就消失了。

有没有人见过这个?

+0

嗯...问题或答案?如果前者,请发布...[question](http://stackoverflow.com/questions/ask):-) – kleopatra 2013-07-14 07:45:27

0

如果您将函数定义在循环中,则会发生此错误,因为您试图在每次迭代中定义它。

相关问题