对于一个非常简单的循环,我遇到了一些麻烦,因为内存不足,我真的不知道为什么。希望有人能帮助我。这是我的代码:
$full_list = array();
$fp = fopen($file_name, 'r');
while (($line = fgetcsv($fp, 0, $delimiter)) !== FALSE)
{
$val = array_slice($line, 0, 1);
$line = NULL;
unset($line);
if (in_array($val, $full_list) === FALSE)
$full_list[] = $val;
$val = NULL;
unset($val);
}
fclose($fp);
我尝试了$line=NULL&;然后按你所看到的取消设置,但即使这样也不起作用,如果文件太大,我会失去内存。。。老实说,我甚至不明白为什么在循环过程中记忆会增加。。。。
是的,你总是会耗尽内存,因为变量$full_list
总是会增长,直到你耗尽内存。
你需要直接在while
循环中完成你的工作。
而使用array_slice($line, 0, 1)
只需使用:$line[0]