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

Сравнить и сгруппировать одинаковые массивы

16.12.2015, 07:11. Показов 2227. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Помогите в решении задачи, пожалуйста.
Есть массив из 261 элемента, каждый элемент (начиная с 1 - го) - вложенный массив из 30 элементов.
0 элемент верхнего массива - массив ФИО 260 сотрудников.
Нужно найти вложенные массивы с полным совпадением - для понятности - это график работы на месяц, 8,33 и 10,83 - рабочее время, если NULL - сотрудник не работал(выходной или отпуск).

Нашли 5 одинаковых массивов, далее определяем ФИО сотрудников этих массивов из 0 элемента, далее для вывода нужен 1 какой-то масссив из 5 и ФИО 5 соответствующих сотрудников. Выводим это все в excel.
Находим еще совпадения и выводим в другой такой же файл.
т.е. одинаковые массивы нужно как-то сгруппировать что-ли и помесить в еще какой-то массив, в итог получим n-е кол-во массивов с 2 элементами: 0 - график работы, а 1 - фио сотрудников с таким графиком работы.
и потом уже это n-e кол-во массивов выводить спокойно в файлы.

Кликните здесь для просмотра всего текста
array(261) {
[0]=>
array(260) {
[0]=>
string(56) "Константин Сергеевич"
[1]=>
string(56) "Анастасия Михайловна"
[2]=>
string(42) "Елена Игоревна"
[3]=>
string(48) "Екатерина Юрьевна"
[4]=>
string(44) "Алексей Игоревич"
.............
[1]=>
array(31) {
[0]=>
string(4) "8.33"
[1]=>
NULL
[2]=>
NULL
[3]=>
string(4) "8.33"
[4]=>
string(4) "8.33"
[5]=>
string(4) "8.33"
[6]=>
string(4) "8.33"
[7]=>
string(4) "8.33"
[8]=>
NULL
[9]=>
NULL
[10]=>
string(4) "8.33"
[11]=>
string(4) "8.33"
[12]=>
string(4) "8.33"
[13]=>
string(4) "8.33"
[14]=>
string(4) "8.33"
[15]=>
NULL
[16]=>
NULL
[17]=>
string(4) "8.33"
[18]=>
string(4) "8.33"
[19]=>
string(4) "8.33"
[20]=>
string(4) "8.33"
[21]=>
string(4) "8.33"
[22]=>
NULL
[23]=>
NULL
[24]=>
string(4) "8.33"
[25]=>
string(4) "8.33"
[26]=>
string(4) "8.33"
[27]=>
string(4) "8.33"
[28]=>
string(4) "8.33"
[29]=>
NULL
[30]=>
NULL
}
[2]=>
array(31) {
[0]=>
NULL
[1]=>
string(4) "8.33"
[2]=>
string(4) "8.33"
[3]=>
string(4) "8.33"
[4]=>
string(4) "8.33"
[5]=>
string(4) "8.33"
[6]=>
NULL
[7]=>
NULL
[8]=>
string(4) "8.33"
[9]=>
string(4) "8.33"
[10]=>
string(4) "8.33"
[11]=>
string(4) "8.33"
[12]=>
string(4) "8.33"
[13]=>
NULL
[14]=>
NULL
[15]=>
string(4) "8.33"
[16]=>
string(4) "8.33"
[17]=>
string(4) "8.33"
[18]=>
string(4) "8.33"
[19]=>
string(4) "8.33"
[20]=>
NULL
[21]=>
NULL
[22]=>
string(4) "8.33"
[23]=>
string(4) "8.33"
[24]=>
string(4) "8.33"
[25]=>
string(4) "8.33"
[26]=>
string(4) "8.33"
[27]=>
NULL
[28]=>
NULL
[29]=>
string(4) "8.33"
[30]=>
string(4) "8.33"
}
[3]=>
array(31) {
[0]=>
string(4) "8.33"
[1]=>
string(4) "8.33"
[2]=>
string(4) "8.33"
[3]=>
string(4) "8.33"
[4]=>
NULL
[5]=>
NULL
[6]=>
NULL
[7]=>
string(5) "10.83"
[8]=>
string(5) "10.83"
[9]=>
NULL
[10]=>
NULL
[11]=>
string(5) "10.83"
[12]=>
string(5) "10.83"
[13]=>
NULL
[14]=>
NULL
[15]=>
string(5) "10.83"
[16]=>
string(5) "10.83"
[17]=>
NULL
[18]=>
NULL
[19]=>
string(5) "10.83"
[20]=>
string(4) "8.33"
[21]=>
string(4) "8.33"
[22]=>
string(4) "8.33"
[23]=>
string(4) "8.33"
[24]=>
NULL
[25]=>
NULL
[26]=>
string(4) "8.33"
[27]=>
string(4) "8.33"
[28]=>
string(4) "8.33"
[29]=>
string(4) "8.33"
[30]=>
string(4) "8.33"
}
[4]=>
array(31) {
[0]=>
string(4) "8.33"
[1]=>
string(4) "8.33"
[2]=>
string(4) "8.33"
[3]=>
NULL
[4]=>
NULL
[5]=>
string(4) "8.33"
[6]=>
string(5) "10.83"
[7]=>
string(5) "10.83"
[8]=>
string(5) "10.83"
[9]=>
NULL
[10]=>
NULL
[11]=>
NULL
[12]=>
string(5) "10.83"
[13]=>
NULL
[14]=>
NULL
[15]=>
string(5) "10.83"
[16]=>
string(5) "10.83"
[17]=>
string(5) "10.83"
[18]=>
NULL
[19]=>
NULL
[20]=>
string(4) "8.33"
[21]=>
string(4) "8.33"
[22]=>
string(4) "8.33"
[23]=>
string(4) "8.33"
[24]=>
NULL
[25]=>
NULL
[26]=>
string(4) "8.33"
[27]=>
string(4) "8.33"
[28]=>
string(4) "8.33"
[29]=>
string(4) "8.33"
[30]=>
string(4) "8.33"
}


0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2015, 07:11
Ответы с готовыми решениями:

Сравнить два ассоциативных массива и вывести одинаковые значения.
Есть два ассоциативных массива : $array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); $array2 = array('green'...

Сравнить массивы
Есть 2 массива array (size=2) 0 => array (size=2) 'id' => string '7' (length=1) 'answer' => string 'yes'...

Подскажите, как сравнить массивы?
Всем привет. Ребят подскажите, как можно сравнить массивы? Т.е. есть исходный массив с уникальными ключами и соответственно значениями: ...

4
5 / 5 / 4
Регистрация: 01.11.2009
Сообщений: 576
16.12.2015, 07:15  [ТС]
Вот пример выходной формы.
Миниатюры
Сравнить и сгруппировать одинаковые массивы  
0
5 / 5 / 4
Регистрация: 01.11.2009
Сообщений: 576
16.12.2015, 12:57  [ТС]
вроде получилось найти одинаковые массивы, но как теперь одинаковые выделить, чтобы их не было в исходном массиве и далее поиск продолжился без них?
PHP
1
2
3
4
5
6
7
8
9
10
for($t=0;$t<count($names);$t++)
    {
        for($r=0;$r<count($names);$r++)
        {
            if ($result[$t] == $result[$r])
                {   echo "массивы равны<br>";
                        }
            else {  echo "массивы не равны<br>";  }   
        }
    }
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
16.12.2015, 13:40
Цитата Сообщение от Владимир23 Посмотреть сообщение
одинаковые выделить, чтобы их не было в исходном массиве
http://php.net/manual/ru/function.array-unique.php
0
5 / 5 / 4
Регистрация: 01.11.2009
Сообщений: 576
17.12.2015, 12:03  [ТС]
Цитата Сообщение от Azdeman Посмотреть сообщение
Сообщение от Владимир23
одинаковые выделить, чтобы их не было в исходном массиве
http://php.net/manual/ru/function.array-unique.php
Замечание: Обратите внимание, что array_unique() не предназначена для работы с многомерными массивами.

Добавлено через 14 минут
Azdeman, подскажите как одинаковые массивы слить в 1 в цикле

Добавлено через 9 минут
я тут
PHP
1
2
3
4
if ($result[$t] == $result[$r])
                {   echo "массивы равны<br>";
                        }
            else {  echo "массивы не равны<br>";    }
получаю в цикле 11 одинаковых массивов (в какой-то итерации) - графиков работы, мне нужен только 1 из них

Добавлено через 21 час 45 минут
Вот, что в итоге получилось:
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
40
41
42
43
44
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
{
    $names[] = $row['fio'];
    
    $value = array();
  
    for($q=1;$q<=31;$q++)
        {
            $value[] = $row['D'.$q];
            
        }   
 
    $result[] = $value;
}
 
//Возвращаем только уникальные массивы из многомерного $result
    $objects = array_map("unserialize",array_unique(array_map("serialize",$result)));
//сортируем массив
    sort($objects);
    
//формируем массив соспадений графиков работы
    
    for($t=0;$t<count($objects);$t++) //count($names)
                {   //проходим по каждому уникальному графику
                    for($r=0;$r<count($result);$r++)
                    {       //проходим по каждому графику из всех и получаем ФИО сотрудника
                        if ($objects[$t] == $result[$r])
                            {   
                                //заносим ФИО в массив
                                $group[] = $names[$r];
                            }
                    }
                    //заносим уникальный график в массив
                    $graph[] = $objects[$t];
                    //заносим массивы ФИО и графика в массив
                    $AR[] = $group;
                    //добавляем график к ФИО
                    array_push($AR,$graph);
                    //помещаем двумерный массив главный массив          
                    $AR2[] = $AR;
                    //очищаем переменные
                    unset($group,$graph,$AR);
                    
                }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.12.2015, 12:03
Помогаю со студенческими работами здесь

Как сверить 2 массивы и удалить одинаковые значения?
Предположим есть массив есть массив $a = и есть второй массив $b = Как из массива b удалить те же жлементы из массива a То...

Сравнить массивы на одинаковые буквы
Кто поможет решить задачку? 1) Дано 2 массива. Сравнить массивы на одинаковые буквы. Тоесть если есть в одинаковые буквы в массиве. Типа...

Сгруппировать одинаковые элементы массива
Здравствуйте, подскажите пожалуйста,например,мы вводим массив 1,2,3,4,5,6,5,1 а вывод был 11,2,3,4,55,6. Как это реализовать ?

Список строк разбить на отдельные массивы и сгруппировать по индексам
Добрый день. Считываю файл построчно, разбивая на массивы строк. date = with open(&quot;Sample/Test.txt&quot;) as file: for...

Сравнить несколько строк, и отсеять одинаковые
Как бы вы ускорили данный вариант, или какие способы вы знаете? Func&lt;string, IEnumerable&lt;string&gt;&gt; getKey = str =&gt;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Вот уже год прошел, как у меня домен в reg.ru ...
Etyuhibosecyu 16.04.2026
И ничего они мне не сделали. Если отвязать карту, никакие услуги они не навяжут. Я бы с радостью продлил еще на два года, чтобы не мучиться с временным доменом и меня уже знали по red-star-soft. com,. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru