Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 11

Быстрый поиск соответствий в двух многомерных массивах

12.02.2012, 23:49. Показов 3265. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
я новичёк - многово не знаю - вот и решил спросить.

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

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
$i1=0;  
$i2=0;
foreach ($array1 as $a1 => $s1){// начало первого массива
 foreach ($array1[$a1] as $a2 => $s2){
  foreach ($array1[$a1][$a2] as $a3 => $s3){
   foreach ($array1[$a1][$a2][$a3] as $a4 => $s4){
    foreach ($array1[$a1][$a2][$a3][$a4] as $a5 => $s5){
     foreach ($array1[$a1][$a2][$a3][$a4][$a5] as $a6 => $s6){
                    
      foreach ($array2 as $q1 => $w1){// начало второго массива
       foreach ($array2[$q1] as $q2 => $w2){
        foreach ($array2[$q1][$q2] as $q3 => $w3){
         foreach ($array2[$q1][$q2][$q3] as $q4 => $w4){
          foreach ($array2[$q1][$q2][$q3][$q4] as $q5 => $w5){
           foreach ($array2[$q1][$q2][$q3][$q4][$q5] as $q6 => $w6){
            foreach ($array2[$q1][$q2][$q3][$q4][$q5][$q6] as $q7 => $w7)
             foreach ($array2[$q1][$q2][$q3][$q4][$q5][$q6][$q7] as $q8 => $w8){
       $i1++;
       if($s6==$w8){// проверка на совпадение данных 2-х массивов
        $i2++;
         echo "$a1 - $a2 - $a3 - $a4 - $a5 - $s6 - $q7 - $q6 - $q5 - $q4 - $q3 - $q2 - $q1<br>";
                                                    }
             }
            }
           }
          }
         }  
        }
       }
      }
     }
                
    }  
   }
  }
 }
}
?>
в итоге $i2 = 50
а $i1 = 22 млн.
время выполнения скрипта 10 сек.
какие есть варианты сократить время выполнения скрипта?
может есть какая то возможность делать поиск в многомерных ассоциативных массивах не используя foreach ?
причина по которой я использую foreach - это то, что мне нужны имена ключей.
так же не много расскажу почему именно 2 массива.
это скрипт выполняет функцию поиска транспорта. есть сайт с рассписанием транспорта в городе (2000 остановок и 200 вариантов транспорта) - на этом сайте поиск выполняеться не более чем 5 секунд. я хочу сделать такой же сайт для своего города (500 остановок и 80 видов транспорта). но даже не полностью заполнив данные (только 130 остановок и 13 видов транспорта и не используя все варианты поиска - у меня скрипт выполняеться на мнооого дольше).
я использую для поиска 2 массива.
1 массив - это направление от первой остановки до середины, а второй массив - это от конечной остановки поиска до середины. и проверка двух массивов служет совмещением первой и конечной остановок.
да, я новичёк и мало что заню - вот и интересуюсь.
заранее спасибо за помощь.
п.с. вот готовый пример сайта где работает этот поиск: http://www.minsktrans.by/city/#route_search/
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.02.2012, 23:49
Ответы с готовыми решениями:

Поиск соответствий между столбцами двух таблиц
помогите пожалуйста прописать поиск соответствий между столбцами, что-то я совсем не могу понять что да как

Поиск соответствий в двух файлах и запись в третий
Есть два больших текстовых файла (больше гигабайта). В строке 11 колонок и данные разделены табами. НЕобходимо найти соответствия в первом...

Индексы в многомерных массивах
int Mass={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}; В этом случае элементы массива будут получать следующие...

3
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
13.02.2012, 11:45
array_search(); возвращает ключь элемента если такой найден
array_values(); возвращает массив со всеми значениями многоуровнего массива , а значит можно искать через in_array()
0
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 11
13.02.2012, 17:07  [ТС]
а можно привести малюсенький пример?
что-то я не совсем понял как это риализовать хотя бы в данном примере двух ассоциативных многомерных массивов, который я описал выше.
использовать вместо foreach или же непосредственно совместно?
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
13.02.2012, 17:32
так попробуй
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Объединяем оба массива
$merge = array_merge($array1, $array2);
// Находим число значений в новом массиве
$count_values = array_count_values($merge);
 
/* 
Теперь мы знаем, если кол-во какого-либо значения будет больше 1, 
значит оно повторяется, вот их ключи и выберем
*/
foreach ($count_values as $key => $value)
{
    if ($value > 1)  $arr_keys[] = $key;
}
 
// Выводим ключи
echo '<pre>';
print_r($arr_keys);
echo '</pre>';
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2012, 17:32
Помогаю со студенческими работами здесь

Об индексах в многомерных массивах
Как обращаться к конкретной переменной в многомерном массиве, используя буквенные индексы? Например, стоит задача - написать...

обработка данных в многомерных массивах
здравствуйте помогите, пожалуйста, соединить два фрагмента задачи, а то никак не могу сообразить как второй фрагмент присоединить к...

Интерполяция значений в многомерных массивах
Здравствуйте, знаю, что глупый вопрос, но не судите строго, только недавно начал учить Java, вот столкнулся с такой проблемой, Мне надо...

Обработка данных в многомерных массивах(Delhpi)
Помогите пожалуйста,не могу понять где ошибка Удалить самый левый столбец, в котором встретиться четный отрицательный элемент. if...

Обработка данных в многомерных массивах(delhpi)
Выручите пожалуйста,нужна ваша помощь. Даны задания: Дан двумерный массив размером n*m, заполненный случайным образом. 1.Заменить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru