我得到此錯誤重新聲明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