2010-03-25 75 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的問題。