2010-08-06 43 views
7

Tôi có thể làm việc này không?PHP bao gồm tệp trong foreach Loop

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

Trường hợp kịch bản bên ngoài là khoảng 800 dòng mã, tôi muốn giữ riêng cho mục đích tổ chức.

Duyên dáng!

+5

........ Vì vậy, tôi đang duy trì một đoạn đường 30.000 slop nơi lập trình viên thực hiện việc này mọi lúc. Nếu bạn là anh ta, tôi có thể đấm bạn qua internet không? – Incognito

+0

@Incognito, Bạn có nghĩa là 30k dòng trong một tệp duy nhất hoặc bạn có nghĩa là * tổng * của 30k dòng? – Pacerier

Trả lời

4

Nó sẽ hoạt động nhưng có một đầu vào đĩa I/O để gọi một tệp ngoài trong vòng lặp trừ khi bạn tình cờ có APC, XCache, eAccelerator đang chạy. Bên cạnh đó, bạn không thể sử dụng bao gồm. Bạn nên sử dụng include_once nếu đó là cùng một tệp bạn đang tải lại

+0

Trong một tình huống nhất định trên máy chủ ipage.com, làm điều này mang lại cho tôi một lỗi máy chủ 500. – atwellpub

+1

Rất nhiều thứ có thể gây ra lỗi máy chủ 500. Có lẽ bạn nên bắt đầu một Q & A mới. – stillstanding

7

Tôi đoán bạn nên sử dụng chức năng này tốt hơn.

Bao gồm tệp cần đọc, phân tích cú pháp và diễn giải tệp. Nhưng nếu bạn có một chức năng mà bạn chỉ cần ăn với $item hiện tại, mã của nó chỉ được đọc, phân tích cú pháp và diễn giải một lần và bạn sẽ không có chi phí mà bạn sẽ có với việc bao gồm.

+1

+1 nhưng nhiều khả năng một số chức năng nếu đó là 800 LOC. – Gordon

+1

Một vấn đề tôi thấy với việc làm cho nó một chức năng sẽ phải vượt qua các biến vào hàm, và có hơn 80 biến mà LOC sử dụng. – atwellpub

+0

@atwellpub: Có phải tất cả các biến được xác định ở đâu đó trước đây không? – Gumbo

1

Cho dù bạn có ổn hay không phụ thuộc vào việc bạn có muốn bao gồm tập lệnh bên ngoài của mình trong mỗi lần lặp hay không.

Lưu ý rằng nếu tệp được bao gồm của bạn chứa hàm, bạn sẽ gặp phải các lỗi khi cố định nghĩa cùng một hàm nhiều lần.

0

ermmmm - tại sao?

nếu cùng một tệp của nó bao gồm một lần - có thể đặt mã trong đó trong một hàm và chỉ cần gọi hàm đó bao nhiêu lần bạn cần.

+0

Đó là một cách để làm chức năng của người nghèo. – Pacerier

1

Bạn bị thương không bị giết bởi một vị thần để làm điều đó, và nó thậm chí sẽ hoạt động. Nhưng vẫn hoạt động tốt hơn.

-5

Tôi nghĩ bạn nên cân nhắc sử dụng hàm eval() thay thế.