У меня есть следующий рабочий код для сравнения 2 CSV-файлов - файл base.csv для сравнения с файлом master.csv с помощью функции row_compare. Сейчас я повторяю файл master.csv, а затем повторяю совпадения. Мне нужна помощь, чтобы отобразить только файл master.csv в формате таблицы и выделить строки, соответствующие элементам файлов base.csv.
function row_compare($a, $b)
{
if ($a === $b) {
return 0;
}
return (implode("",$a) < implode("",$b) ) ? -1 : 1;
}
$file1 = new SplFileObject("master.csv");
$file1->setFlags(SplFileObject::READ_CSV);
$file2 = new SplFileObject("../../base.csv");
$file2->setFlags(SplFileObject::READ_CSV);
foreach ($file1 as $row) {
$csv_1[] = $row;
}
foreach ($file2 as $row) {
$csv_2[] = $row;
}
$unique_to_csv1 = array_udiff($csv_1, $csv_2, 'row_compare');
$unique_to_csv2 = array_udiff($csv_2, $csv_1, 'row_compare');
$all_unique_rows = array_merge($unique_to_csv1,$unique_to_csv2);
foreach($all_unique_rows as $unique_row) {
foreach($unique_row as $element) {
echo $element . " ";
}
echo '<br />';
}
master.csv
02Jan2020,Marilyn Salary,-31570.29,162252.14,,
02Jan2020,Nancy Skosana,-30000,132252.14,,
02Jan2020,Johan Consulting Fees,-30000,102252.14,,
02Jan2020,Carol Consulting Fees,-30000,72252.14,,
02Jan2020,Juanic Salary,-24239.22,48012.92,,
02Jan2020,Shirley Salary,-14382.67,33630.25,,
06Jan2020,Carol Consulting Fees,-10000,72252.14,,
06Jan2020,Juanic Salary,-4239.22,48012.92,,
06Jan2020,Shirley Salary,-4382.67,33630.25,,
Base .csv
ADE Labeling
Johan Consulting Fees
Best Board
Nancy Skosana
Cabstrut
Juanic Salary
Cybertrek
Drizit
Shirley Salary
Выходной формат
Таким образом, все строки, содержащие сборы за консультацию Йохана, зарплата Ширли, зарплата Хуани c а Нэнси Скосан должна смениться на желтый