Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 包含在循环中_Php_Loops_Include - Fatal编程技术网

Php 包含在循环中

Php 包含在循环中,php,loops,include,Php,Loops,Include,我有一个函数,它读取存储在外部文件中的值,如下所示 function MyFunction($param) { include ($MyInclude); ...do the job } 我为循环的每个实例调用这个函数 foreach ($fileArray as $param => $processed) { MyFunction($param); ...rest of the job } 是服务器内存过载,还是文件只加载一次并从缓存中读取?我需要修理这个吗?我这样问是因为“$fil

我有一个函数,它读取存储在外部文件中的值,如下所示

function MyFunction($param) {
include ($MyInclude);
...do the job
}
我为循环的每个实例调用这个函数

foreach ($fileArray as $param => $processed) {
MyFunction($param);
...rest of the job
}

是服务器内存过载,还是文件只加载一次并从缓存中读取?我需要修理这个吗?我这样问是因为“$fileArray”会随着时间的推移处理越来越多的文件。

每次都会包含它,如果您有定义,这会导致错误(因为它会尝试重新定义某些内容)。尝试一次
include\u
,或者重构你的函数,这样它就不需要在每次迭代中都
include

include
总是“复制”那些文件的内容,就好像它们是在那里键入的一样。如果您在这些文件中有可能导致错误的定义


如果该文件中只有一些可变文字,则可能不会产生错误,但内存使用情况取决于您对这些文字的处理方式。如果只在函数中包含,而不返回任何函数或将它们复制到其他外部变量中,那么当函数返回时,它们将被垃圾收集。

我认为在函数中包含文件不是一个好主意,尤其是多次。如果需要这样做,可以使用require_一次,而不是include


但是,我建议您将其包含在函数之外。然后使用您需要的任何变量作为全局变量。

可能的重复:如果$MyInclude不是基于参数的,为什么要在每次迭代中包含?