@aopil

Как сделать запись или как сравнить данные двух массивов?

Как лучше сделать в данной ситуации?

Смысл скрипта: Получаю свежие Ip адреса курлом, и записываю в массив, получаю вот такую картину:
5cb78c0012fa1661223861.png
Затем, делаю запрос к БД и выбираю все Ip из Бд и записываю в массив, получаю такое:
5cb78cc9a2a2f696920848.png

Теперь нужно сравнить эти 2 массива и из первого удалить строчки, которые нашлись во втором массиве, после чего я смогу записать в БД именно новые Ip, чтобы не было повторений.

Получается слишком сложно, может можно каким-то образом делать запись в БД, и если такой Ip в БД есть пропускать запись?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 2
Stalker_RED
@Stalker_RED
insert ... on duplicate key ignore
https://dev.mysql.com/doc/refman/5.5/en/insert.html
Ответ написан
Комментировать
@DanKud
$arr1 = [массив_новых_ip];
$arr2 = [массив_ip_из_базы];
$arrResult = array_filter($arr1, function($em) use ($arr2) {
    return (array_search($em, $arr2) === false);
});

/* если нужно обнулить ключи, то обернуть в array_values() */
$arrResult = array_values(array_filter($arr1, function($em) use ($arr2) {
    return (array_search($em, $arr2) === false);
}));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
aliencash
@aliencash
Партизан
нужно просто объединить массивы array_merge, а потом array_unique
Ответ написан
Ваш ответ на вопрос

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

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