2010-03-25 72 views

回答

10

你可能会包括包含函数不止一次文件:

include 'file.php'; 
    include 'file2.php'; 

file.php:

include 'file2.php'; 

Cannot redeclare saveorder() (previously declared in :10) on line 71

要么使用include_oncerequire_once,以确保它不会发生(如果您尝试将其包含在两个单独的位置(如文件中的第一个位置),可能会导致问题,之后出于某种原因在函数内部,如果包含_once部分,则第二个函数将不起作用)。

1

无论tables.php包含一个函数也被称为saveOrder(),或:

不能重新声明saveorder()(10先前声明)你发布的文件实际上是tables.php。 PHP在同一个命名空间中不能有两个具有相同名称的函数。

+0

当我注释掉第10行时,它只是将错误移动到第11行? – Tom 2010-03-25 23:19:20

4

您必须多次包含当前文件(行所在的位置)。

一个简单的办法是使用

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

不过,我建议创建一个新的functions.php文件,其中包括只有一次,并把所有的功能存在。

1

这也可能是由于saveorder()在另一个被多次调用的函数中被释放引起的。

例如。

function func1() 
{ 
    function saveorder() 
    { 
     echo 'x'; 
    } 
    saveorder(); 
} 

for ($i=0;$i<2;++$i) 
    func1(); 
+0

这是我的情况。 – claytronicon 2017-08-21 19:26:30

1

我想这一定是因为,你必须在PHP中的错误“:10”我得到的所有排序没有在我的代码的任何地方出现奇怪的符号 - 即。有一次可能是“:0”,下一次是“196870”,下一次是“!qhsu89s3”。我还发现,如果在刷新之前等待一段时间,通常会自行排除。

不是太鼓励我不得不说,但我认为在Windows上PHP的问题。