Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1

Убрать дубли в массиве

17.03.2016, 14:18. Показов 5596. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть большой массив с большим числом элементов (более 500) благо что он "двумерный".
Структура массива:
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
45
46
47
48
49
$aArray = array(
    0 => array(
        "KEY1" => "Value0_1",
        "KEY2" => "Value0_2",
        "KEY3" => "Value0_3",
        "KEY4" => "Value0_4",
        "KEY5" => "Value0_5",
        "KEY6" => "Value0_6",
        "KEY7" => "Value0_7",
        "KEY8" => "Value0_8",
        "KEY9" => "Value0_9",       
    ),
    1 => array(
        "KEY1" => "Value1_1",
        "KEY2" => "Value1_2",
        "KEY3" => "Value1_3",
        "KEY4" => "Value1_4",
        "KEY5" => "Value1_5",
        "KEY6" => "Value1_6",
        "KEY7" => "Value1_7",
        "KEY8" => "Value1_8",
        "KEY9" => "Value1_9",
    ),
    
    ...
    
    n-1 => array(
        "KEY1" => "Valuen-1_1",
        "KEY2" => "Valuen-1_2",
        "KEY3" => "Valuen-1_3",
        "KEY4" => "Valuen-1_4",
        "KEY5" => "Valuen-1_5",
        "KEY6" => "Valuen-1_6",
        "KEY7" => "Valuen-1_7",
        "KEY8" => "Valuen-1_8",
        "KEY9" => "Valuen-1_9",
   ),
    n => array(
        "KEY1" => "Valuen_1",
        "KEY2" => "Valuen_2",
        "KEY3" => "Valuen_3",
        "KEY4" => "Valuen_4",
        "KEY5" => "Valuen_5",
        "KEY6" => "Valuen_6",
        "KEY7" => "Valuen_7",
        "KEY8" => "Valuen_8",
        "KEY9" => "Valuen_9",
   ),
);
Число элементов в массиве (n), ключи массива неизменны ("KEY1"), только значения ("Valuen_1").
Требуется "пере собрать" новый массив, в котором отсутствуют элементы массива, в которых значения (Value) по ключам (KEY) одинаковые. Ключей по которым нужно делать отбор больше одного, например по ("KEY1", "KEY4", "KEY6", "KEY9"), т.е. нужно "стандартное" решение, которое удаляет дубли из массива по заданным ключам.
Не могу понять с чего начать решения задачи, в голове даже алгоритма нету ее решения.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2016, 14:18
Ответы с готовыми решениями:

Убрать дубли из многомерного массива
Всем доброго времени уважаемые форумчане! Бьюсь весь день не могу понять, как убрать дубли из массива, к примеру есть массив. $myArray...

Вывести дубли на экран в одномерном массиве. Как?
вот , бьюсь, бьюсь, устала. все-таки решила попросить помощи. Надо вывести на экран дубли в одномерном массиве, созданном рендомом. ...

Убрать дубли в запросе
Подскажите как убрать дубли в запросе. Запрос по нескольку раз дублирует одни и те же записи таблицы ( в частности в поле , и.т.д.) .

39
 Аватар для useruser
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
17.03.2016, 14:36
Если я правильно понял задачу, то нужно 3 массива.
Исходный со всеми данными.
Массив с ключами ("KEY1", "KEY4", "KEY6", "KEY9") - содержащий те строки, которые надо удалить.
Выходной массив - пока пустой.

Далее нужно сравнить каждую запись исходного массива с каждой записью массива с ключами. Если не совпало - вставить эту запись в выходной новый массив.

Сравнение производить стандартно. Это 2 цикла (цикл в цикле).

Добавлено через 5 минут
Примерно так
Псевдокод (ближе к паскаль)
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
count:=0;
for i:=1 to MASSIV1.LENGHT do
begin
for j:=1 to MASSIV2.LENGHT do
begin
if (MASSIV1[i,1]<>MASSIV2[j,1] and MASSIV1[i,2]<>MASSIV2[j,2]) then
begin
count:=count+1;
MASSIV3[count,1]=MASSIV1[i,1];
MASSIV3[count,2]=MASSIV1[i,2];
end;
 
end;
end;
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
18.03.2016, 05:26  [ТС]
Цитата Сообщение от useruser Посмотреть сообщение
Примерно так
Псевдокод (ближе к паскаль)
Логика более менее понятна, надо попробовать реализовать.

Добавлено через 14 часов 44 минуты
Не смог додумать как реализовать такую запись на РНР:
Pascal
1
if (MASSIV1[i,1]<>MASSIV2[j,1] and MASSIV1[i,2]<>MASSIV2[j,2]) then
т.к. запись MASSIV1[i,1] не может быть такой, а только такой MASSIV1[i,sKey], потому что исходный массив это "массив в массиве".
0
 Аватар для useruser
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
18.03.2016, 09:07
Цитата Сообщение от Gcom Посмотреть сообщение
т.к. запись MASSIV1[i,1] не может быть такой, а только такой MASSIV1[i,sKey], потому что исходный массив это "массив в массиве".
Не понял в чем сложность. Многомерность массива не влияет на алгоритм.

Из интернета - уже php код.


Обход двумерного массива - есть не что иное, как последовательный перебор элементов массива. А в листинге ниже представлен код который ещё и выводит на монитор содержимое.
Листинг № 3 - Обход двумерного массива
PHP
1
2
3
4
5
6
7
8
9
10
11
// обход двумерного массива 
for($i=0; $i < count($THN); $i++)   
{  
    
 
   for($q=0; $q < count($THN[$i]); $q++)  
   {  
     echo  " » ".$THN[$i][$q];     
   }  
   echo "<br>";  
}
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
18.03.2016, 09:41  [ТС]
Цитата Сообщение от useruser Посмотреть сообщение
Листинг № 3 - Обход двумерного массива
Да это так, но если:
[$i] является числом от 0 до i (0, 1, 2, 3, 4, ..., i)
[$q] тоже число от 0 до q (0, 1, 2, 3, 4, ..., q)

Но у нас тут:
[$i] является числом от 0 до i (0, 1, 2, 3, 4, ..., i)
[$q] является строкой ('KEY1', 'KEY2', 'KEY3', 'KEY4', 'KEY5', 'KEY6', ...,'KEYq' )

Добавлено через 24 минуты
Начало положено, пока сделал "отсев" по одному ключу (первый ключ 'KEY1') :
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
<?php
 
$aKeyArray  = array ('KEY1', 'KEY4', 'KEY6', 'KEY9'); # Массив с ключами ("KEY1", "KEY4", "KEY6", "KEY9")
$aTempArray = array (); # Выходной массив - пока пустой.
        
$x = count ($aKeyArray) - 1;
$m = count ($aKeyArray) - 1 - $x;
        
$aTempArray[] = array (
    'KEY1' => $aArray[0]['KEY1'],   
    'KEY1' => $aArray[0]['KEY1'],  
    'KEY1' => $aArray[0]['KEY1'],  
    'KEY1' => $aArray[0]['KEY1'],  
    'KEY1' => $aArray[0]['KEY1'],  
    'KEY1' => $aArray[0]['KEY1'], 
    'KEY1' => $aArray[0]['KEY1'],  
    'KEY1' => $aArray[0]['KEY1'], 
    'KEY1' => $aArray[0]['KEY1'],
    );
        
for ($n = 0; $n < count ($aArray) - 1; $n++) {
            
    if ($aArray[$n][$aKeyArray[$m]] !== $aArray[$n+1][$aKeyArray[$m]]) {
                
        $aTempArray[] = array (
            'KEY1' => $aArray[$n+1]['KEY1'],   
            'KEY1' => $aArray[$n+1]['KEY1'],  
            'KEY1' => $aArray[$n+1]['KEY1'],  
            'KEY1' => $aArray[$n+1]['KEY1'],  
            'KEY1' => $aArray[$n+1]['KEY1'],  
            'KEY1' => $aArray[$n+1]['KEY1'], 
            'KEY1' => $aArray[$n+1]['KEY1'],  
            'KEY1' => $aArray[$n+1]['KEY1'], 
            'KEY1' => $aArray[$n+1]['KEY1'],
            );              
                
    };
            
};
print '<pre>';
print_r ($aTempArray);
print '</pre>';
?>
Теперь остается:
1. Переложить aTempArray в aArray и запустить это в несколько циклов, как это сделать пока не придумал.

Но чет мне кажется, что с таким подходом я далеко не уеду
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
18.03.2016, 10:15
я не понял - дубли надо среди KEYX искать или среди valueX ?
0
 Аватар для useruser
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
18.03.2016, 10:22
Цитата Сообщение от Gcom Посмотреть сообщение
Но чет мне кажется, что с таким подходом я далеко не уеду
Мда. Задача примитивная. Мне просто лень писать. Сегодня я ленивый.
А как насчет 6 вложенных циклов и массивов размерностью скажем 30? Есть и такие задачи. И это не сложно.

Рекомендую лучше изучить работу с массивами. Ваша задача является типовой.
Сомневаюсь, что есть другой разумный способ решения т.к. такие вложенные массивы используются почти везде при выборе/сортировке и т.д.

По вашему коду вижу, что вы плохо понимаете суть.
Вот это вообще бесмысленно, можно сказать даже не зная php...
Цитата Сообщение от Gcom Посмотреть сообщение
'KEY1' => $aArray[$n+1]['KEY1'], 'KEY1' => $aArray[$n+1]['KEY1'],
И вообще код странный. Где цикл в цикле?
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
18.03.2016, 10:26  [ТС]
Цитата Сообщение от полудух Посмотреть сообщение
я не понял - дубли надо среди KEYX искать или среди valueX ?
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
<?php
$aArray = array(
    0 => array(
        "KEY1" => "Value1",
        "KEY2" => "unique1",
        "KEY3" => "unique2",
        "KEY4" => "Value2",
        "KEY5" => "unique3",
        "KEY6" => "Value3",
        "KEY7" => "unique4",
        "KEY8" => "unique5",
        "KEY9" => "Value4",       
    ),
    1 => array(
        "KEY1" => "Value1",
        "KEY2" => "unique6",
        "KEY3" => "unique7",
        "KEY4" => "Value2",
        "KEY5" => "unique8",
        "KEY6" => "Value3",
        "KEY7" => "unique9",
        "KEY8" => "unique10",
        "KEY9" => "Value4",
    ),
    2 => array(
        "KEY1" => "Value1",
        "KEY2" => "unique11",
        "KEY3" => "unique12",
        "KEY4" => "Value2",
        "KEY5" => "unique13",
        "KEY6" => "Value3",
        "KEY7" => "unique14",
        "KEY8" => "unique15",
        "KEY9" => "unique16",
    ),
);
Элемент [0] массива считается дублем с элементом [1] массива по ключам: KEY1, KEY4, KEY6, KEY9
И все элементы [0], [1], [2] массива считаются дублями по ключам: KEY1, KEY4, KEY6
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
18.03.2016, 10:29
а если бы например было так:
PHP
1
2
$arr[0]{'KEY1'} = 'value1';
$arr[1]{'KEY5'} = 'value1';
т.е. кеи разные, но содержимое одно
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
18.03.2016, 10:37  [ТС]
Цитата Сообщение от useruser Посмотреть сообщение
Вот это вообще бесмысленно, можно сказать даже не зная php...
Почему, я придумал так, берем первый элемент, ложем "на выход", потом этот элемент сравниваем с последующими, если он не равен, то этот элемент ложем туда же "на выход", если равен, то не чего не делаем, т.е. на выходе будет массив без дублей по первому элементу, затем вот это все надо запустить но уже со второго элемента, и так далее пока не кончиться массив, будет много циклов, мне это не очень понравилось, т.к. скорость обработки при большом объеме данных будет очень медленная, много времени будет занимать эта обработка.

Добавлено через 1 минуту
Цитата Сообщение от полудух Посмотреть сообщение
т.е. кеи разные, но содержимое одно
Не не значения из разных ключей не пересекаются, так сказать это разные группы данных.

Добавлено через 2 минуты
полудух, Грубо говоря, в KEY1 хранятся данные о породе кошек, в KEY5 хранятся их возраст, я думаю навряд ли эти данные пересекутся когда либо.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
18.03.2016, 10:44
Цитата Сообщение от Gcom Посмотреть сообщение
Элемент [0] массива считается дублем с элементом [1] массива по ключам: KEY1, KEY4, KEY6, KEY9
И все элементы [0], [1], [2] массива считаются дублями по ключам: KEY1, KEY4, KEY6
второе получается лишним, если последовательно сравнивать каждый $arr[01234] со всеми остальными
$arr[0] с $arr[1],$arr[2],$arr[N]
$arr[1] с $arr[2],$arr[3],$arr[N]
итд
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
18.03.2016, 10:54  [ТС]
Цитата Сообщение от полудух Посмотреть сообщение
второе получается лишним, если последовательно сравнивать каждый $arr[01234] со всеми остальными
$arr[0] с $arr[1],$arr[2],$arr[N]
$arr[1] с $arr[2],$arr[3],$arr[N]
итд
Не совсем понятно о чем Вы, тут изначально:
1. входящий массив
PHP
1
$aArray
2. массив ключей по которым нужно искать дубли
PHP
1
$aKeyArray  = array ('KEY1', 'KEY4', 'KEY6', 'KEY9');
3. выходной массив (в котором эти дубли отсутствуют, по заданным параметрам в п.2
PHP
1
$aTempArray
Добавлено через 3 минуты
В идеале должно получиться следующее:
PHP
1
2
3
4
function removeDuplicateKeys ($aArrayIn, $aKeyArrayIn) {
...
}
$aTempArray = removeDuplicateKeys ($aArray, $aKeyArray);
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
18.03.2016, 11:01
что вы воду мутите, вот ваше ТЗ:
Цитата Сообщение от полудух Посмотреть сообщение
Элемент [0] массива считается дублем с элементом [1] массива по ключам: KEY1, KEY4, KEY6, KEY9
И все элементы [0], [1], [2] массива считаются дублями по ключам: KEY1, KEY4, KEY6
разницу понимаете между "отдельный массив с ключами, которые надо вычистить" и "прорядить дубли внутри исходного массива" ?
в 1м сообщении тоже ни слова про такое условие
этот $aKeyArray вы выдумали позже, когда пытались решить задачу через какие-то грабли
я вам дал алгоритм, как это делается на самом деле
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
18.03.2016, 11:18  [ТС]
Цитата Сообщение от полудух Посмотреть сообщение
разницу понимаете между "отдельный массив с ключами, которые надо вычистить" и "прорядить дубли внутри исходного массива" ?
Ну может быть я и не правильно выразился.
Цитата Сообщение от полудух Посмотреть сообщение
$arr[0] с $arr[1],$arr[2],$arr[N]
$arr[1] с $arr[2],$arr[3],$arr[N]
Что то похожее я начал делать, только немного не так, сейчас попробую по Вашему алгоритму.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
18.03.2016, 11:53
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
 
// сюда ляжет чистый массив без дублей
$arr2 = array();
 
$arr = array(
    0 => array(
        "KEY1" => "Value1",
        "KEY2" => "unique1",
        "KEY3" => "unique2",
        "KEY4" => "Value2",
        "KEY5" => "unique3",
        "KEY6" => "Value3",
        "KEY7" => "unique4",
        "KEY8" => "unique5",
        "KEY9" => "Value4",
    ),
    1 => array(
        "KEY1" => "Value1",
        "KEY2" => "unique6",
        "KEY3" => "unique7",
        "KEY4" => "Value2",
        "KEY5" => "unique13",
        "KEY6" => "Value3",
        "KEY7" => "unique9",
        "KEY8" => "unique10",
        "KEY9" => "Value4",
    ),
    2 => array(
        "KEY1" => "Value1",
        "KEY2" => "unique11",
        "KEY3" => "unique12",
        "KEY4" => "Value2",
        "KEY5" => "unique13",
        "KEY6" => "Value3",
        "KEY7" => "unique14",
        "KEY8" => "unique15",
        "KEY9" => "unique16",
    ),
);
 
/*
последовательно сравнить каждый $arr[01234] со всеми остальными
$arr[0] с $arr[1],$arr[2],$arr[N]
$arr[1] с $arr[2],$arr[3],$arr[N]
*/
foreach ($arr as $key=>$val) {fix_doubles($key);}
 
print_r($arr2);
 
##      СРАВНЕНИЕ МАССИВА $n (01234) со всеми остальными массивами, которые идут после него
function fix_doubles(&$n)
{
    global $arr,$arr2;
 
    echo "\n\tмассив № ",$n," сравнивается со всеми остальными массивами:\n";
 
    // $i = каждый массив [0123], идущий после текущего
    for ($i=$n+1;$i<$arr;$i++)
    {
        // поиск дублей. $key = ключ KEY1/KEY2/KEYN, $val = Value1/unique11 - значение в общем
        foreach ($arr[$n] as $key=>$val)
        {
            // если нашёлся дубль, он убирается из последующего массива
            if (isset($arr[$i]{$key}) && $arr[$n]{$key} === $arr[$i]{$key})
            {
                echo"найден дубль в \$arr[",$n,"]: ",$key," - ",$val,"\n";
                unset($arr[$i]{$key});
            }
 
            // а текущий массив заносится в новый чистый $arr2
            $arr2[$n]{$key} = $val;
        }
 
        // массивы закончились
        if (!isset($arr[$i])) {return false;}
 
    }
 
}
 
?>
1
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
18.03.2016, 12:43  [ТС]
полудух, Меня всегда пугали такие записи (&$n), ну не понимаю я ссылок, а потому разобраться в коде будет сложно, особенно если потребуется сделать в нем изменения, но все равно СПС, будем разбираться
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
18.03.2016, 12:55
в гардеробе когда оставляешь одежду дают номерок
номерок это ссылка на одежду, вместо самой одежды
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
18.03.2016, 13:08  [ТС]
Цитата Сообщение от полудух Посмотреть сообщение
в гардеробе когда оставляешь одежду дают номерок
номерок это ссылка на одежду, вместо самой одежды
С гардеробом понятно, а вот с практикой на РНР нет

Код работает не правильно, выводит первый элемент массива со всеми ключами, а затем у остальных элементов отсутствуют пары "Ключ => Значение", т.е. если у первого элемента все девять пар присутствуют, то у остальных то одна, то две, то 4 этих пар.

Добавлено через 8 минут
Вот мой вариант, но он почему то еще больше дублей плодит, чем убирает
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
$nCountArray = count ($aArray) - 1;
        
for ($i = 0; $i < $nCountArray; $i++) { 
 
    $aTempArray[] = array (
        'KEY1' => $aArray[$i]['KEY1'],   
        'KEY2' => $aArray[$i]['KEY2'],  
        'KEY3' => $aArray[$i]['KEY3'],  
        'KEY4' => $aArray[$i]['KEY4'],  
        'KEY5' => $aArray[$i]['KEY5'],  
        'KEY6' => $aArray[$i]['KEY6'], 
        'KEY7' => $aArray[$i]['KEY7'],  
        'KEY8' => $aArray[$i]['KEY8'], 
        'KEY9' => $aArray[$i]['KEY9'],
    );
        
    for ($j = 0; $j < $nCountArray; $j++) {
                
        if (($aArray[$i][$aKeyArray[0]] !== $aArray[$j+1][$aKeyArray[0]]) &&
            ($aArray[$i][$aKeyArray[1]] !== $aArray[$j+1][$aKeyArray[1]]) &&
            ($aArray[$i][$aKeyArray[2]] !== $aArray[$j+1][$aKeyArray[2]]) &&
            ($aArray[$i][$aKeyArray[3]] !== $aArray[$j+1][$aKeyArray[3]]) ) {
                    
            $aTempArray[] = array (
                'KEY1' => $aArray[$j+1]['KEY1'],   
                'KEY2' => $aArray[$j+1]['KEY2'],  
                'KEY3' => $aArray[$j+1]['KEY3'],  
                'KEY4' => $aArray[$j+1]['KEY4'],  
                'KEY5' => $aArray[$j+1]['KEY5'],  
                'KEY6' => $aArray[$j+1]['KEY6'], 
                'KEY7' => $aArray[$j+1]['KEY7'],  
                'KEY8' => $aArray[$j+1]['KEY8'], 
                'KEY9' => $aArray[$j+1]['KEY9'],
                );              
        };
    };
};
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
18.03.2016, 13:09
а вы чего хотите, удалять И исходник, И дубль?
тогда это уже не дубль, если исходник удалить
код оставляет в массиве 1 единственную запись из множества таких же
если она раньше присутствовала в нескольких массивах, то будет только в первом найденном
это и есть чистка дублей, а вы о чём?
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
18.03.2016, 13:40  [ТС]
полудух, Видать я плохо ставлю задачу, пробую еще раз.
В массиве $aArray есть элементы в виде массива:
PHP
1
2
3
4
5
6
7
8
9
10
11
    0 => array(
        "KEY1" => "Value1",
        "KEY2" => "unique1",
        "KEY3" => "unique2",
        "KEY4" => "Value2",
        "KEY5" => "unique3",
        "KEY6" => "Value3",
        "KEY7" => "unique4",
        "KEY8" => "unique5",
        "KEY9" => "Value4",
    ),
Дак вот нужно перебрать эти элементы ($aArray[0], $aArray[1], $aArray[2], $aArray[N],) и удалить те элементы (структуру вложенного массива не менять) у которых значения:
"Value1", "unique1", "unique2", "Value2", "unique3", "Value3", "unique4", "unique5", "Value4"

одинаковые по соответствующим ключам:
"KEY1", "KEY2", "KEY3", "KEY4", "KEY5", "KEY6", "KEY7", "KEY8", "KEY9"

Т.е. Если (
($aArray[0]['KEY1'] == $aArray[N]['KEY1']) &&
($aArray[0]['KEY4'] == $aArray[N]['KEY4']) &&
($aArray[0]['KEY6'] == $aArray[N]['KEY6']) &&
($aArray[0]['KEY9'] == $aArray[N]['KEY9'])
) считается что $aArray[0] есть дубль $aArray[N] и в новый массив нужно добавить один из этих элементов, т.е. один как бы удалить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2016, 13:40
Помогаю со студенческими работами здесь

Убрать дубли из готового отчета
Прошу помочь, очень важно!! Есть сложный отчет, суть которого многострочный поиск по выборке из БД, Отчет кончается так: ...

Как хитро убрать дубли
Здравствуйте. Подскажите пожалуйста как избавится от дублей. SELECT u.id AS users_id, app.id AS app, SUM(c.balance), ...

Убрать дубли избранного материала
Вопрос по дублям Joomla 3. Не могу исправить. Статья - избранный материал на главной. Материал расположен в меню статьи, категория...

Как убрать дубли страниц на joomla 3 + K2
Ситуация такая. Вобщем с дублями как-то борюсь при помощи robots. но всё же они остались. Я использую компонент К2 для вывод...

Появляются дубли сайта, как их убрать?
Доброе время суток! В последнее время у сайта начали плодиться поддомены, являющиеся полными дублями основного сайта. Проблема в том, что...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru