Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;致命错误:无法重新声明<;功能>&引用;_Php_Include - Fatal编程技术网

Php &引用;致命错误:无法重新声明<;功能>&引用;

Php &引用;致命错误:无法重新声明<;功能>&引用;,php,include,Php,Include,我有一个函数(这正是它在我的文件顶部显示的方式): 此错误表示您的函数已定义;这意味着: 在两个文件中定义了相同的函数 或者在同一文件的两个位置定义了相同的函数 或者定义函数的文件包含两次(因此,函数似乎定义了两次) 为了帮助解决第三点,解决方案是使用而不是包含functions.php文件,因此不能包含多次。您可能不止一次包含了functions.php文件。我建议使用get\u included\u files——正如Pascal所说,您可能是在看错误的文件,或者是这个函数已在包含的文件

我有一个函数(这正是它在我的文件顶部显示的方式):


此错误表示您的函数已定义;这意味着:

  • 在两个文件中定义了相同的函数
  • 或者在同一文件的两个位置定义了相同的函数
  • 或者定义函数的文件包含两次(因此,函数似乎定义了两次)

为了帮助解决第三点,解决方案是使用而不是包含
functions.php文件,因此不能包含多次。

您可能不止一次包含了functions.php文件。

我建议使用
get\u included\u files
——正如Pascal所说,您可能是在看错误的文件,或者是这个函数已在包含的文件中定义


如果您试图包含的文件是必需的,
require\u once
也很有用。

因为您提供的代码没有明确包含任何内容,要么包含两次,要么(如果脚本是代码的入口点)在webserver config/php.ini中必须设置一个自动前置,或者加载了一个非常模糊的扩展来定义函数。

我也遇到了同样的问题。最后它是一个双重包含。一个包含在名为X的文件中,另一个包含在名为Y的文件中。知道在文件Y中我有include('X')

解决方案1 不要在循环内声明函数(如
foreach
for
while
…)!在他们面前宣布

解决方案2 您应该只包含一次该文件(其中存在该函数)。所以,
而不是:
include(“functions.php”)

使用:
include_once(“functions.php”)

解决方案3 如果上述任何一项都没有帮助,则在函数声明之前,添加一个检查以避免重新声明:

if (!function_exists('your_function_name'))   {
  function your_function_name()  {
    ........
  }
}

在编写函数之前,可以先检查函数名是否不存在 借


或者您可以将函数的名称更改为另一个名称

当我的*.php.bak(由记事本自动创建)包含在编译中时,我有一个奇怪的行为。在我从文件夹中删除所有*.php.bak之后,这个错误就消失了。
也许这会对某人有所帮助。

或者您不能在循环中创建函数

  • 比如


    for($i=1;$i表示您已经创建了一个同名的类

    例如:

    class ExampleReDeclare {}
    
    // some code here
    
    class ExampleReDeclare {}
    

    第二个示例重新声明抛出错误。

    此错误表示您的函数已定义;这可能意味着:

    • 在两个文件中定义了相同的函数
    • 或者在同一文件的两个位置定义了相同的函数
    • 或者定义函数的文件包含两次(因此,函数似乎定义了两次)

    我认为您在第三位面临的问题是脚本多次包含此文件。因此,您可以使用instead of或
    include_once
    而不是
    include
    来解决此问题,因为它包含了
    函数.php
    文件,所以不能包含多次。

    在我的情况下,这是因为另一个函数!一旦我移出该函数,错误就消失了,一切都按预期进行

    解释为什么不应在函数中使用函数


    这可能会对某些人有所帮助。

    出现此错误的另一个可能原因是您的函数与另一个PHP内置函数同名。例如

    function checkdate($date){
       $now=strtotime(date('Y-m-d H:i:s'));
       $tenYearsAgo=strtotime("-10 years", $now);
       $dateToCheck=strtotime($date);
       return ($tenYearsAgo > $dateToCheck) ? false : true;
    }
    echo checkdate('2016-05-12');
    

    PHP中已经存在
    checkdate
    函数。

    我不喜欢
    函数存在('fun\u name')
    ,因为它依赖于将函数名转换为字符串,另外,您必须对其命名两次。可能很容易因重构而中断

    将函数声明为lambda表达式(我还没有看到提到过此解决方案):

    并据此使用:

    $salt = $generate_salt();
    

    然后,在重新执行上述PHP代码时,该函数只会覆盖前面的声明。

    如果您有Wordpress主题问题,可能是因为虽然您在wp_选项表中重命名了主题,但您没有重命名样式表。我对此感到很挣扎。

    我想添加我的2美分经验,这可能会有所帮助对你们许多人来说


    如果在循环中声明函数(for、foreach、while),您将面临此错误消息。

    我最近弹出了一个弹出窗口,在同一文件中,函数在定义之前被调用,但它没有将返回值分配给变量。为要分配的返回值添加一个变量会使错误消失。

    Hu;我想所指示的行号没有“精确”;或者,作为预防措施:您确定查看的是“正确”文件吗?这是唯一一个包含generate_salt()的文件函数。这意味着它可能被包含了不止一次,我想就是这样——如何修复它,我不知道,因为我已经把这个项目设置得非常糟糕。我想应该重新启动。使用include_once代替include(和require_once代替require)在这种情况下通常会有所帮助:通过这种方式,是PHP本身确保一个文件不被多次包含。在函数中包含函数有什么错?这个答案帮助了我,这是对我问题的解释。这很好,你让我的一天@AlexHighHigh变得非常酷,这看起来很明显,但没有人说关于它的一切。我会在某个时候详细说明它的描述,但现在我把它保存在我的lil magic库中,这些有用的片段将在以后的日子里再回来:你是一个英雄
    function checkdate($date){
       $now=strtotime(date('Y-m-d H:i:s'));
       $tenYearsAgo=strtotime("-10 years", $now);
       $dateToCheck=strtotime($date);
       return ($tenYearsAgo > $dateToCheck) ? false : true;
    }
    echo checkdate('2016-05-12');
    
    $generate_salt = function()
    {
        ...
    };
    
    $salt = $generate_salt();