Intereting Posts
Javascript API отлично работает на главном сайте, но не работает на внешнем сервере PHP – найти следующую будущую повторяющуюся дату? C #: эквивалент php sprintf Является ли хорошей практикой отправлять изображения в строке base64 с android на PHP? Как предотвратить XSS с HTML / PHP? Как фильтровать результаты автозаполнения в текстовых полях Bootstrap – требуется скрывать контент до тех пор, пока модальные нагрузки Модуль PHP для чтения торрент-файлов Как я могу использовать XPath для выполнения поиска без учета регистра и поддержки неанглийских символов? strip_tags достаточно, чтобы удалить HTML из строки? cURL error 60: SSL-сертификат: не удалось получить сертификат локального эмитента PHP Неустранимая ошибка: класс HttpRequest не найден Библиотека утилиты CakePHP Xml запускает предупреждение DOMDocument PHP-захват массивов для создания строк кода Как исправить это: «Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсом, boolean задан в //"?

Сравнение нескольких многомерных подматриц друг с другом и слияния с порогом подобия

Введение:

У меня есть 6 многомерных массивов PHP , каждый из которых содержит 20 под-массивов, которые, в свою очередь, содержат по два суб-массива, один из которых является строкой, а другой – неопределенным числом ключевых слов.

Я хочу сравнить каждый из 120 подматриц с 100 другими подматрицами, содержащимися в других многомерных массивах. Таким образом, подматрица 1 в многомерном массиве 1 сравнивается с подматрицей 1 с подматрицей 20 в многомерном массиве 2 с многомерным массивом 6 и т. Д.


Вопрос:

Как я могу сравнить каждый из 20 подматриц в одном многомерном массиве с каждыми 20 под-массивами в других 5 многомерных массивах на основе сравнения строк / строк и ключевых слов / ключевых слов ? И впоследствии слияние массивов со сходством выше определенного порога ?
В конечном итоге получается один многомерный массив, содержащий все объединенные подмассивы ?

Количество ключевых слов почти никогда не будет одинаковым, и они почти никогда не будут в одном порядке.


Многомерная структура массива

Array // This is the first multidimensional-array. ( [0] => Array ( [string] => This is a story about keywords. [keywords] => "These", "are", "the", "keywords", "that", "the", "arrays", "that", "were", "merged", "had", "in", "common" ) [1] => Array ( [string] => This is a story about a monkey. [keywords] => "Trees", "Monkey", "Flying", "Drink", "Vacation", "Coconut", "Big", "Bonobo", "Climbing" ) ) Array // This is the second multidimensional-array. ( [0] => Array ( [string] => This is another, but different story, about a monkey. [keywords] => "Monkey", "Big", "Trees", "Bonobo", "Fun", "Dance", "Cow", "Coconuts" ) [1] => Array ( [string] => This is a story about mountains. [keywords] => "Mountain", "Elevation", "Sightseeing", "Hill", "so", "forth" ) ) 

Требуемый многомерный массив

 Array ( [0] => Array // Merged 2+ sub-arrays of two different multidimensional-arrays ( [string] => This is a story about a monkey.This is another, but different story, about a monkey. [keywords] => "Monkey", "Trees", "Bonobo", "Coconuts", "Big" ) [0] => Array // Merged 2+ sub-arrays of two different multidimensional-arrays ( [string] => [keywords] => ) ) 

Знание

У меня есть рабочее понимание PHP , SQL , Javascript , JQuery и Python , и я ищу все от письменного решения, подсказок или ссылок на один или любые полезные советы.

Я рассмотрел использование PHP levenshtein, но не знаю, как применить эту функцию к массиву, содержащему несколько ключевых слов в неуказанном порядке и содержащем различное количество ключевых слов.

Кроме того, я не уверен, как сравнивать несколько массивов друг с другом, а не просто с основным массивом. Разумеется, массивы можно разделить, загрузить в базу данных или другое, если это поможет сделать это возможным.


благодаря

Я знаю, что этот вопрос довольно хаотичен и / или запутан, но, проведя поиски решения через несколько дней, подошел с пустыми руками, я не видел другого выбора, кроме как пойти сюда. Я ни в коем случае не сторонник, и мои знания в области кодирования ограничены, поэтому, если есть определенная функция, выполняющая именно то, что я ищу, тогда, пожалуйста, укажите мне в этом направлении, так как я сам не пересек ее ,

Любая помощь, советы, ссылки или такие, которые способствуют решению этой проблемы, очень приветствуются. Заранее большое спасибо.

Насколько я понимаю вашу ситуацию, у вас есть только один многомерный массив. Первый уровень имеет 6 массивов, каждый массив первого уровня содержит 20 (второй уровень) массивов. Каждый массив второго уровня содержит 1 (третий уровень) массив с 2 элементами: string и keywords .

Вы хотите сравнить каждую string и keywords со всеми другими string s и keywords s, которые существуют в многомерном массиве.

Давайте сделаем несколько задумчивых циклов с array_diff_key () & range ()

 foreach($L1arrays as $index=>$L1focus){ // 6 arrays with indexes 0 - 5 // now we want to check against all siblings that haven't been checked yet foreach(array_diff_key($L1arrays,range(0,$index)) as $L1comparison){ // no dupe loops // When $index=0, second foreach will only loop through $L1arrays indexed 1-5 // When $index=1, second foreach will only loop through $L1arrays indexed 2-5 // When $index=2, second foreach will only loop through $L1arrays indexed 3-5 // When $index=3, second foreach will only loop through $L1arrays indexed 4-5 // When $index=4, second foreach will only loop through $L1arrays[5] // When $index=5, it will not loop because it has already been compared // to all other indexes via previous loops. /* ... in this section you can loop through the 20 sub-arrays of $L1focus and compare them against the 20 sub-arrays of each $L1comparison */ } } 

Теперь обсудим логику сравнения. Я не понимаю из текущей информации в вашем вопросе, как вы хотите отличить, насколько один массив достаточно похож на другой. Хотелось бы, чтобы вы приложили больше усилий для создания реалистичного Wanted Multidimensional Array – второй массив имеет дублирующий ключ 0 и имеет в нем два пустых элемента, поэтому он бесполезен.

Вы хотите сравнить keywords или string значения или оба? Насколько строгое сравнение (что такое «порог подобия»)?

PHP – отличный исполнитель для такого рода работ. Я удалил тег javascript из вашего вопроса.

Проделайте небольшую работу / исследование (используя мое предложение по циклу) и уточните, как вы хотите сравнить самые глубокие значения массива и отредактировать свой вопрос. Чтобы снова привлечь внимание к этому вопросу, напишите комментарий, начинающийся с @mickmackusa

Удачи!