Intereting Posts
Дата PHP («I») для будущей или прошлой даты Хранение паролей портативных (PHPass). Должен ли я использовать их? Как проверить сайт с помощью Google Analytics или нет CURL? загрузите большой файл размером от 1 до 2 ГБ с помощью загрузки файла jQuery – blueimp (основанный на Ajax) php / yii, который показывает ошибку в браузере Firefox Передавать аргументы из массива в php в конструктор PHP разбивает массивы на группы на основе значения одного поля Laravel Eloquent пропустить n, взять все? PHP / mySQL – как вставить вложенные строки в многомерную матрицу Сортировка массива по последним символам пары значений? CakePHP не использует мои модели Своевременный интервал для извлечения данных из db и остановки при поступлении данных JSON.parse: неожиданный персонаж Запуск и остановка рабочих в gearman php получить процент сходства двух массивов в php php xpath извлекает значения атрибутов на основе нескольких атрибутов и родительских атрибутов

Как сравнить строку со списком строк в PHP?

В основном у меня есть два файла со строками в них, разделенные новой строкой.

То, что я хочу сделать, это получить первую строку из первого файла и сравнить ее со всеми строками из второго файла. Затем возьмите вторую строку из первого файла и сравните ее со всеми строками во втором файле, затем получите третью и т. Д. И т. Д.

В настоящее время у меня есть эта часть кода, но я не уверен, работает ли она так, как я хочу, чтобы она была

$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 тоже).

Это, как говорится, ваш код прост и легко следовать, поэтому, вероятно, лучший способ пойти.