Как проверить существует ли запись в CSV файле?

Здравствуйте, делаю парсинг ресурса, результат помещаю в двумерный массив, затем сохраняю в CSV, далее мне необходимо при повторном подходе проверять записи на наличие в этом CSV и если конкретная запись из результата парсинга отсутствует, то дописать csv файл. Проблема в том, что пытался пробовать разные варианты, у меня не получается.

Я преобразую в массив файл CSV, затем сравниваю оба массива.

Пытался с array_diff, своё писал... Максимум добился только того, что определяется недостающая запись, если она в самом конце, а если в середине, то уже ничего не работает.

Схематично выглядит всё так (только вместо числовых значений - строковые):

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

    [1] => Array
        (
            [0] => 3
            [1] => 4
        )

    [2] => Array
        (
            [0] => 5
            [1] => 6
        )

    [3] => Array
        (
            [0] => 7
            [1] => 8
        )

)
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

    [1] => Array
        (
            [0] => 5
            [1] => 6
        )

    [2] => Array
        (
            [0] => 7
            [1] => 8
        )

)


То есть при сравнении этих двух массивов надо, что бы вернулось это:

[1] => Array
        (
            [0] => 3
            [1] => 4
        )


Помогите, пожалуйста, конкретным кодом, уже голову сломал...

UPD: Хотя может есть ещё какой-нибудь способ, что бы сравнить строки первого массива с содержимым CSV файла?
  • Вопрос задан
  • 481 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$res = array_udiff($array1, $array2, function($a, $b) {
    if ($a[0] < $b[0]) return -1;
    if ($a[0] > $b[0]) return 1;
    if ($a[1] < $b[1]) return -1;
    if ($a[1] > $b[1]) return 1;
    return 0;
});

Но IMHO, лучше для такой цели использовать базу данных.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Может проще взять старый добрый diff?
Ответ написан
prototype_denis
@prototype_denis
Symfony
при повторном подходе проверять записи на наличие в этом CSV и если конкретная запись из результата парсинга отсутствует, то дописать csv файл.

// $firstArray  = str_getcsv... old
// $secondArray = str_getcsv... new
$mergedArray = array_merge_recursive($secondArray, $firstArray);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы