我得到此错误重新声明saveorder()但是,我不认为我是?!?上线71无法在第71行重新声明saveorder()(之前在:10中声明)
8.function saveOrder()
9.{
10. include 'tables.php';
11. $orderId = 0;
12. $shippingCost = 5;
...
68. }
69. echo $orderId;
70. return $orderId;
71. }
我得到此错误重新声明saveorder()但是,我不认为我是?!?上线71无法在第71行重新声明saveorder()(之前在:10中声明)
8.function saveOrder()
9.{
10. include 'tables.php';
11. $orderId = 0;
12. $shippingCost = 5;
...
68. }
69. echo $orderId;
70. return $orderId;
71. }
你可能会包括包含函数不止一次文件:
include 'file.php';
include 'file2.php';
file.php:
include 'file2.php';
Cannot redeclare saveorder() (previously declared in :10) on line 71
要么使用include_once
或require_once
,以确保它不会发生(如果您尝试将其包含在两个单独的位置(如文件中的第一个位置),可能会导致问题,之后出于某种原因在函数内部,如果包含_once
部分,则第二个函数将不起作用)。
无论tables.php包含一个函数也被称为saveOrder(),或:
不能重新声明saveorder()(10先前声明)你发布的文件实际上是tables.php。 PHP在同一个命名空间中不能有两个具有相同名称的函数。
您必须多次包含当前文件(行所在的位置)。
一个简单的办法是使用
if (!function_exists('saveOrder')) {
function saveOrder() {...}
}
不过,我建议创建一个新的functions.php文件,其中包括只有一次,并把所有的功能存在。
这也可能是由于saveorder()在另一个被多次调用的函数中被释放引起的。
例如。
function func1()
{
function saveorder()
{
echo 'x';
}
saveorder();
}
for ($i=0;$i<2;++$i)
func1();
这是我的情况。 – claytronicon 2017-08-21 19:26:30
我想这一定是因为,你必须在PHP中的错误“:10”我得到的所有排序没有在我的代码的任何地方出现奇怪的符号 - 即。有一次可能是“:0”,下一次是“196870”,下一次是“!qhsu89s3”。我还发现,如果在刷新之前等待一段时间,通常会自行排除。
不是太鼓励我不得不说,但我认为在Windows上PHP的问题。
当我注释掉第10行时,它只是将错误移动到第11行? – Tom 2010-03-25 23:19:20