За последние 24 часа нас посетили 17552 программиста и 1310 роботов. Сейчас ищут 1049 программистов ...

Поиск соответствия

Тема в разделе "PHP для новичков", создана пользователем CyberWolf, 12 янв 2023.

  1. CyberWolf

    CyberWolf Активный пользователь

    С нами с:
    1 окт 2014
    Сообщения:
    22
    Симпатии:
    0
    Всем привет.
    Уже писал в разделе для новичков, но не смог найти решения. Ребята там старались помочь, спасибо им огромное, но все не то. Задачу знаю, понимаю как решить, но не дает не знание синтаксиса. Может кто сможет помочь.

    Есть две таблицы с данными (типа Excel), это два многомерных массива. В них обычные массивы с данными. Данные эти содержат список продаж (дата, адрес продажи, имя покупателя, количество, сумма).
    Пытаюсь написать код, который будет делать поиск на соответствие и выборку по двум многомерным массивам. При этом дата и сумма у нас всегда вписаны правильно, по ним совпадения точно будут, если они есть в обеих таблицах. А вот имя и адрес могут вписать по разному. Например, в одной таблице Иван Иванович Иванов, а в другой Иванов И.И.. Либо на латинице или с ошибкой. Такая же проблема и с адресом.

    Все это должно выводиться в две колонки (это оформлю сам конечно). В правой данные из одной таблицы, в левой их совпадение из другой. Если что-то не совпадает (имя или город), должно выводиться то, что совпадает (например дата и сумма). Если вообще нет совпадения по каким-то данным, например в одной таблице есть продажа, а в другой нет, выводим что-то типа "Нет данных".

    Пример вывода полного совпадения:
    11.01.23, Москва ул. Пушкина д 5, Иван Иванович Иванов, 2500 / 11.01.23, Москва ул. Пушкина д 5, Иван Иванович Иванов, 2500

    Пример вывода отсутствия совпадения:
    11.01.23, Москва ул. Пушкина д 5, Иван Иванович Иванов, 2500 / 11.01.23, , , 2500

    Пример вывода полного совпадения:
    11.01.23, Москва ул. Пушкина д 5, Иван Иванович Иванов, 2500 / Нет данных
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.850
    Симпатии:
    745
    Адрес:
    Татарстан
    ну и где ваши наработки кода?

    по хорошему - вам необходимо привести все записи к единому формату .. тогда уже и сравнивать или искать совпадения
     
  3. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Выведи массив через print_r($my_massiv); где $my_massiv - имя исходного массива. Выложи результат в теме. Будем двигаться дальше.
     
  4. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Помогают тем, кто что то делает сам. Это закон.
     
    don.bidon нравится это.
  5. CyberWolf

    CyberWolf Активный пользователь

    С нами с:
    1 окт 2014
    Сообщения:
    22
    Симпатии:
    0
    Извиняюсь что долго не отвечал.

    К сожалению привести все записи к единому формату не получится, потому что обе таблицы заполняют разные компании и разные менеджеры. Тот же адрес или ФИО они могут написать по разному. Ориентироваться можно в основном на дату и сумму, а дальше если повезётся совпадет остальное.

    Да, конечно, я понимаю...
    Самому сложно пока написать код, в основном учусь на разборе чужого.

    Ребята из ветки новичков помогли написать это - https://extendsclass.com/php-bin/7195105
    Но это не совсем то что надо...

    Мне необходимо чтобы из двух многомерных массивов происходила выборка на идентичность. При этом чтобы нам не приходилось задавать элемент поиска. То есть, мы вставляем данные двух многомерных массивов и начинается автоматический поиск. Сначала например по дате, затем по адресу, затем по имени и так далее. Если чего-то нету, ставится пропуск.

    За основу можно брать многомерный массив номер один (условно) и дальше уже по порядку делать из него поиск по второму многомерному массиву.
     
  6. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Я посмотрел твой пример. Осталось немного доработать, добавить сравнение всех полей и вывод переделать. Попробуй, может получится.
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.850
    Симпатии:
    745
    Адрес:
    Татарстан
    Вы заранее решили что и вот так надо.. Хотя это совсем не так. Вообще, тут только стандартизация ввода адресов, посмотрите на сервис дадата например...
    Если нечёткие сравнение и не хотите прям стандартизовать данные - то elastic search и поиск с его помощью....

    Но что то я думаю вам как новичку не потянуть