2010-08-06 78 views
7

我可以這樣做嗎?PHP在foreach中包含文件Loop

foreach ($item as $val) 
{ 
    include('external_script.php'); 
} 

其中外部腳本約800行代碼我想保持獨立的組織風格。

親切!

+5

........所以,我一直在維護一個30,000行的slop,程序員一直這樣做。如果你是他,我可以通過網絡衝你嗎? – Incognito 2010-08-06 16:23:49

+0

@Incognito,你的意思是在一個文件中有30k行,或者你的意思是一個*總數爲30k的行? – Pacerier 2015-03-06 09:15:49

回答

4

它會工作,但有一個磁盤I/O開銷,用於在循環中調用外部文件,除非您碰巧有APC,XCache,eAccelerator正在運行。另外,你不能使用include。你應該使用include_once,如果它是你正在重新加載的文件

+0

在主機ipage.com的某些情況下,這樣做會給我一個500服務器錯誤。 – atwellpub 2010-08-11 23:06:20

+1

很多事情會導致500服務器錯誤。也許你應該開始一個新的問答。 – stillstanding 2010-08-12 01:31:42

7

我想你應該更好地使用這個功能。

包含文件需要讀取,解析和解釋文件。但是如果你有一個功能,你只需要輸入當前的$item,那麼它的代碼只是被讀取,解析和解釋一次,而且你不會擁有包含的那些開銷。

+1

+1,但如果它是800 LOC,則更可能有幾個功能。 – Gordon 2010-08-06 15:57:12

+1

我把它看作一個函數的問題是必須將變量傳遞給函數,並且有80多個變量用於LOC。 – atwellpub 2010-08-06 16:03:35

+0

@atwellpub:這些所有的變量是在什麼地方定義過的嗎? – Gumbo 2010-08-06 16:04:59

1

不管你是否會好還是取決於你是否想在每次迭代中包含你的外部腳本。

請注意,如果您包含的文件包含功能,則最終會出現嘗試多次定義相同功能的錯誤。

0

ermmmm - 爲什麼?

如果它的同一個文件包含一次 - 也許把代碼放在一個函數中,並且只需要多次調用該函數即可。

+0

這是一種做窮人功能的方式。 – Pacerier 2015-03-06 09:17:52

1

你的創傷不會被上帝殺死,甚至會起作用。 但仍然功能更好。

-5

我認爲你應該考慮使用eval()函數來代替。