В основном у меня есть два файла со строками в них, разделенные новой строкой.
То, что я хочу сделать, это получить первую строку из первого файла и сравнить ее со всеми строками из второго файла. Затем возьмите вторую строку из первого файла и сравните ее со всеми строками во втором файле, затем получите третью и т. Д. И т. Д.
В настоящее время у меня есть эта часть кода, но я не уверен, работает ли она так, как я хочу, чтобы она была
$file = file_get_contents("file1.txt"); $pieces = explode("\n", trim($file)); foreach($pieces as $piece) { $file2 = file_get_contents("file2.txt"); $pieces2 = explode("\n", trim($file2)); foreach($pieces2 as $piece2) { if($piece == $piece2) echo 'yes'; } }
Ну, есть более эффективный способ добиться этого. Используя array_intersect
вы можете найти общие строки между этими двумя файлами.
$a = file('file1.txt'); $b = file('file2.txt'); $c = array_intersect($a, $b);
Какие строки, которые являются общими между двумя файлами, находятся в массиве $c
. Однако обратите внимание, что пересечение чувствительно к регистру.
Ваш код работает правильно, если вы ищете более элегантный способ, я бы либо предложил сценарий bash, либо посмотрел на функцию array_map (возможно, другие, такие как array_walk, array_filter тоже).
Это, как говорится, ваш код прост и легко следовать, поэтому, вероятно, лучший способ пойти.