这是是一个大文件处理,面试官出题的意图并不但愿你两层for
循环进行遍历,这种答案确定是不会要的!php
这道题目的解法思路是:面试
/** * 将两个文件中的每条记录经过hash求余后分别存入10个文件中 * 若是某个文件太大,超过限制内存大小,则能够对其再次hash求余 */ $handler = fopen('file_a_AND_file_b', 'r'); while ($line = fgetc($handler)) { $save_to_file_name = crc32(hash('md5', $line)) % 10; file_put_contents($save_to_file_name, $line); } /** * */ $files = [ '10个文件的路径' ]; foreach ($files as $file) { $handler = fopen($file, 'r'); $tmp_arr = []; while($line = fgetc($handler)) { if(isset($tmp_arr[$line])) { file_put_contents('common_content.txt', $line); } else { $tmp_arr[$line] = true; } } }