Php 无法重新声明函数错误

Php 无法重新声明函数错误,php,Php,我收到错误“无法重新声明函数getContactActiveEmails” 它给出的行号是函数的最后一行} 使用require\u调用所有文件一次。这是整个代码库中唯一定义getContactActiveEmails的地方。这是为什么?从错误中可以清楚地看出,您的函数定义了两次,因此您得到了错误 我建议在声明函数之前检查函数是否已经定义 function getContactActiveEmails($eid) { global $db; if ($eid) {

我收到错误“无法重新声明函数
getContactActiveEmails

它给出的行号是函数的最后一行}


使用
require\u调用所有文件一次
。这是整个代码库中唯一定义
getContactActiveEmails
的地方。这是为什么?

从错误中可以清楚地看出,您的函数定义了两次,因此您得到了错误

我建议在声明函数之前检查函数是否已经定义

function getContactActiveEmails($eid)
{
    global  $db;

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

从错误中可以清楚地看出,函数定义了两次,因此您得到了错误

我建议在声明函数之前检查函数是否已经定义

function getContactActiveEmails($eid)
{
    global  $db;

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

@Shakti Singh的解决方案将起作用,但请记住,您正在失去对代码的控制-您不知道该函数在哪里声明以及它返回什么,因此我建议查找它

  • 尝试不区分大小写的搜索,默认情况下,许多文本编辑器和IDE搜索区分大小写,您的函数可以像
    getcontactactiveemails
    一样在某处声明
  • 如果仍然不走运,让php使用
    Reflection
    extension来说明这个函数
  • 反射的示例用法:

    if (!function_exists('getContactActiveEmails'))
    {
       function getContactActiveEmails($eid)
       {
          global  $db;
    
         if ($eid) {
             $sql = "SELECT email FROM activeEmails WHERE id = $eid";
             return $db->GetCol($sql);
         }
       }
    }
    

    关于@Shakti Singh的解决方案的更多信息将起作用,但请记住,您正在失去对代码的控制-您不知道该函数在何处声明以及返回什么,因此我建议查找它

  • 尝试不区分大小写的搜索,默认情况下,许多文本编辑器和IDE搜索区分大小写,您的函数可以像
    getcontactactiveemails
    一样在某处声明
  • 如果仍然不走运,让php使用
    Reflection
    extension来说明这个函数
  • 反射的示例用法:

    if (!function_exists('getContactActiveEmails'))
    {
       function getContactActiveEmails($eid)
       {
          global  $db;
    
         if ($eid) {
             $sql = "SELECT email FROM activeEmails WHERE id = $eid";
             return $db->GetCol($sql);
         }
       }
    }
    

    更多关于

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

    if(function_exists('getContactActiveEmails')){
        $myfunc = new ReflectionFunction('getContactActiveEmails');
        echo 'Function is declared in '.$myfunc->getFileName().
             ' starting from line '.$myfunc->getStartLine().
             ' to '.$myfunc->getEndLine();
        die;
    }
    
    最初,我只在几个文件中得到了它,所以我只是注释掉了这个导入,它成功了。突然,再次没有变化,我在加载的每个文件中都得到了这个。我想这不是我,所以我重新启动了我的MAMP服务器(apache和mysql),然后它就消失了


    以前有人见过这个吗?

    我也有同样的问题。我有一个名为adhoc.inc.php的标准文件,它被导入到我网站上几乎所有的php文件中。由于一夜之间没有对任何代码进行任何更改,我开始看到错误

    if(function_exists('getContactActiveEmails')){
        $myfunc = new ReflectionFunction('getContactActiveEmails');
        echo 'Function is declared in '.$myfunc->getFileName().
             ' starting from line '.$myfunc->getStartLine().
             ' to '.$myfunc->getEndLine();
        die;
    }
    
    最初,我只在几个文件中得到了它,所以我只是注释掉了这个导入,它成功了。突然,再次没有变化,我在加载的每个文件中都得到了这个。我想这不是我,所以我重新启动了我的MAMP服务器(apache和mysql),然后它就消失了


    以前有人见过吗?

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

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

    在不同的文件中是否有同名函数,或者使用此函数调用文件的多个副本?可能您在某个地方意外调用了带有关键字“function”的函数?这是定义getContactActiveEmails的唯一位置。其他地方有两个地方叫它$电子邮件=getContactActiveEmails($this->recipientID)$电子邮件=getContactActiveEmails($eid);请确保未使用内置类型函数名作为用户定义函数名。此函数是否在某种循环中声明?是否在不同的文件中有同名函数,或使用此函数的文件的多个副本?可能是使用关键字“function”调用该函数某个偶然的地方?这是唯一定义getContactActiveEmails的地方。其他地方有两个地方叫它$电子邮件=getContactActiveEmails($this->recipientID)$电子邮件=getContactActiveEmails($eid);请确保您没有使用内置类型函数名作为用户定义函数名。这个函数是在某种循环中声明的吗?这很有效-希望我们稍后会解决实际问题,但这让我回到实际工作中。谢谢这起作用了——希望我们以后能解决实际问题,但这让我回到了真正的工作中。谢谢隐马尔可夫模型。。。问题还是答案?如果是前者,请张贴…:-)隐马尔可夫模型。。。问题还是答案?如果是前者,请张贴…:-)