2011-05-12 123 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

如果您將函數定義在循環中,則會發生此錯誤,因爲您試圖在每次迭代中定義它。

相關問題