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

Удалить повторяющийся элемент в другом массиве

28.07.2019, 15:37. Показов 1814. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
так выглядит массив каждого пользователя. У каждого пользователя есть массив , в котором записана строка JSON и надо , чтоб , если в где то какой то пункт повторяется , то его удалить или тип этого ,так как выводить его не надо , потому что в конце надо сохранить всё и не важно кто что выбрал во время игры. Главное конечный результат и если два раза что то повторяется , то надо записать вывести как один раз..

к примеру у одного пользователя такой массив.

array (size=2)
0 => string '"{"cards1":["Ucjoba","Kompjuter",null],"cards2":["Ucjoba
","Tetrad",null],"cards3":["Ucjoba","Karandas",null]}"' (length=201)
1 => string '"{"cards1":["Sport","Skorost",null],"cards2":["Sport","Sila",null],"cards3":["Sport","Reakcija",null]}"' (length=201)

в второго пользователя такой.

array (size=2)
0 => string '"{"cards1":["Ucjoba","Kniga",null],"cards2":["Ucjoba
","Tetrad",null],"cards3":["Ucjoba","Rucka",null]}"' (length=201)
1 => string '"{"cards1":["Sport","Skorost",null],"cards2":["Sport","Sila",null],"cards3":["Sport","Vinoslivost",null]}"' (length=201)

Надо сделать , чтоб , если повторяется что то , то выводить только один раз. К примеру у обоих пользователей повторилась в разделе Учёбы "тетрадь" следовательно выводим один раз. В разделе Спорта у них повторилась Скорость и сила =>выводим один раз. З.Ы. пользователей может быть и два и три и десять. так выглядит мой код


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
$company_name =  get_user_meta(  $cur_user_id, 'company' );
$params = array(
    'meta_query' => array(
        array( 
            'key'     => 'company',
            'value'   => $company_name[0],
 
        ),
    )
 );
//закинул нужных пользователей в массив. 
$uq = new WP_User_Query( $params );
if ( ! empty( $uq->results ) ) {
   //беру первого пользователя из массива 
    foreach ( $uq->results as $k=>$u ) {
        echo '<p>' . $u->ID . 'dddd</p>';
        echo '<p>' . $u->user_email . '</p>';
        $array =  get_user_meta(  $u->ID, 'json' );
 
        //пытаюсь взять второго пользователя из массива, но не выходит
        foreach ( $uq->results as $k=>$u_next ) {
            $uq->results[$k+1];
            echo '<p>' . $u_next->ID . 'dsfdsfdfs</p>';
            echo '<p>' . $u_next->user_email . '</p>';
            $array_next =  get_user_meta(  $u_next->ID, 'json' );
            //беру массив первого пользователя и вот этот JSON декодирую
            foreach ($array as $key => $value) {
                $array_first = (json_decode (trim ($value, '"'), true)); 
               //беру массив второго пользователя и вот этот JSON декодирую   
                foreach ($array_next as $key => $value) {
                    $array_second = (json_decode (trim ($value, '"'), true)); 
                    //пытаюсь сравнивать между собой и, если повторяется то удалять и потом вывожу, но  мне кажется вывод ещё рано делать , так как ему через всех пользователей пройтись надо...
                    if($array_first['cards1'][1] == $array_second['cards1'][1]){
 
                        unset($array_next[$key]);
                    }else if($array_first['cards1'][2] == $array_second['cards1'][2]){
                        unset($array_next[$key]);
 
                    }else if($array_first['cards2'][1] == $array_second['cards2'][1]){
                        unset($array_next[$key]);
 
                    }else if($array_first['cards2'][2] == $array_second['cards2'][2]){
                        unset($array_next[$key]);
 
                    }else if($array_first['cards3'][1] == $array_second['cards3'][1]){
                        unset($array_next[$key]);
 
                    }else if($array_first['cards3'][2] == $array_second['cards3'][2]){
                        unset($array_next[$key]);
 
                    }   
                    ?>
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                <div class="category-result-title"><?php echo $array_second['cards1'][0] ?></div> 
                        <div class="container-result">
                            <div class="hexagon hexagon-center-result">
                                <div class="wrap"><?php echo $array_second['cards1'][1];?></div>
 
                                </div>
                            <div class="hexagon hexagon-center-result">
                                <div class="wrap"><?php echo $array_second['cards2'][1];  ?></div>
 
                            </div>
                            <div class="hexagon hexagon-center-result">
                                <div class="wrap"><?php echo $array_second['cards3'][1];?></div>
                            </div>
                        </div>
                        <?php 
                    }
                }
 
            }   
    }


Пожалуйста , помогите , что то у меня не выходит
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2019, 15:37
Ответы с готовыми решениями:

Удалить повторяющийся элемент в динамическом массиве
скажите пож, а как можно удалить повторяющийся элемент, если у нас идет сравнение двух массивов, и они динамические?

Найти не повторяющийся элемент в двумерном массиве
Помогите реализовать программу: Дан двумерный массив , например : 1 2 3 4 5 1 2 3 4 5 6 7 8 9 0 6 7...

Программа, которая находит в массиве максимальный повторяющийся элемент
Напишите программу, которая находит в массиве максимальный повторяющийся элемент или выводит число -1, если ни один элемент не повторяется.

5
Невнимательный
 Аватар для ft4l
3107 / 1277 / 358
Регистрация: 08.02.2013
Сообщений: 7,457
Записей в блоге: 2
28.07.2019, 19:05
Цитата Сообщение от Kazer Посмотреть сообщение
//пытаюсь взять второго пользователя из массива
foreach ( $uq->results .... копирует в память весь массив $uq->results
и по одному перечисяет элемены оттуда

Для такого непоследовательно доступа к элементам, как вариант , оперировать массивом ключей,
типа $ARR_KEYS = array_keys ( $uq->results ) ;
или просто с числовыми ключами , если $uq->results не ассоциативный массив.
0
0 / 0 / 0
Регистрация: 03.02.2018
Сообщений: 285
28.07.2019, 21:21  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
$ARR_KEYS = array_keys ( $uq->results ) ;
и как получить следующего пользователя ?
0
Невнимательный
 Аватар для ft4l
3107 / 1277 / 358
Регистрация: 08.02.2013
Сообщений: 7,457
Записей в блоге: 2
28.07.2019, 22:47
Не представляю даже .) Я в WP пару раз заглядывал только, когда-то давно
В зависимости от того что там в массиве.
вставьте var_dump( $uq->results ); перед первым foreach, выложите здесь примерное содержание массива
Возможно помогут, если ещё опишите точнее желаемый результат , изменять-ли сам массив, или вывести из него данные .как-то выборочно.

сбивает с толку что Вы в начале показываете что-то типа array(0=>array(0=>'json',1=>'json'), 1=>array(0=>'json',1=>json'))
потом появляется каке-то $params = array( 'meta_query'=> array(array('key'=> 'company','value'=>$company_name[0])))
а потом вы пытаетесь разобрать что-то как-будто хотите сделать что-то типа
PHP
1
2
3
4
5
6
7
if ( ! empty($ARR = $uq->results ) ) {
    array_walk($ARR, create_function('&$val', '$val[0] = json_decode(trim($val[0],\'"\'), true);
    $val[1] = json_decode(trim($val[1],\'"\'), true);'));
//  и потом хотите проделать какие-то манипуляции с массивом не-то между элементами
// не-то между элементами элементов
// не-то внутри каждого отдельно взятого json-decoded ассоциативного массива
}
Добавлено через 18 минут
else if($array_first['cards2'][2] == $array_second['cards2'][2]){
unset($array_next[$key]);
}
с таким-же результатом можн написать elseif(1) т.к. в приведённых отрывках ....[2]==null
или нет?
0
0 / 0 / 0
Регистрация: 03.02.2018
Сообщений: 285
29.07.2019, 09:31  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
сбивает с толку что Вы в начале показываете что-то типа array(0=>array(0=>'json',1=>'json'), 1=>array(0=>'json',1=>json'))
потом появляется каке-то $params = array( 'meta_query'=> array(array('key'=> 'company','value'=>$company_name[0])))
а потом вы пытаетесь разобрать что-то как-будто хотите сделать что-то типа
Я выбрал нужных мне юзеров
PHP
1
$params = array( 'meta_query'=> array(array('key'=> 'company','value'=>$company_name[0])))
и у них есть массив, внутри которых записаны стринги . Я хочу их декодировать и сравнить с другими этими декоде у других пользователей, чтобы вывести без повторении.


Пользователь один
array (size=2)
0 => string '"{"cards1":["Study","Computer",null],"cards2":["Study
","notebook",null],"cards3":["Study","Pen",null]}"' (length=201)
1 => string '"{"cards1":["Sport","Speed",null],"cards2":["Sport","Power",null],"cards3":["Sport","Reaction",null]}"' (length=201)


Пользователь два
array (size=2)
0 => string '"{"cards1":["Study","Book",null],"cards2":["Study
","eraser",null],"cards3":["Study","Pen",null]}"' (length=201)
1 => string '"{"cards1":["Sport","Speed",null],"cards2":["Sport","Power",null],"cards3":["Sport","Endurance",null]}"' (length=201)

Надо вывести так
Computer,notebook, pen , speed, power,reaction

Book, eraser,Endurance

Добавлено через 3 минуты
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
83
84
85
86
87
88
array (size=3)
  0 => 
    object(WP_User)[10029]
      public 'data' => 
        object(stdClass)[10025]
          public 'ID' => string '29' (length=2)
          public 'user_login' => string 'eeeee' (length=5) //LOGIN
          public 'user_pass' => string '$P$Bn87RqXJlJp3YlztI7UejcdYQMc6mz/' (length=34)
          public 'user_nicename' => string 'eeeee' (length=5)
          public 'user_email' => string 'wwwww@mail.ru' (length=13)
          public 'user_url' => string '' (length=0)
          public 'user_registered' => string '2019-07-26 10:07:59' (length=19)
          public 'user_activation_key' => string '' (length=0)
          public 'user_status' => string '0' (length=1)
          public 'display_name' => string 'eeeee' (length=5)
      public 'ID' => int 29
      public 'caps' => 
        array (size=1)
          'subscriber' => boolean true
      public 'cap_key' => string 'wp_capabilities' (length=15)
      public 'roles' => 
        array (size=1)
          0 => string 'subscriber' (length=10)
      public 'allcaps' => 
        array (size=3)
          'read' => boolean true
          'level_0' => boolean true
          'subscriber' => boolean true
      public 'filter' => null
      private 'site_id' => int 1
  1 => 
    object(WP_User)[10030]
      public 'data' => 
        object(stdClass)[10026]
          public 'ID' => string '28' (length=2)
          public 'user_login' => string 'ggggg' (length=5)//LOGIN
          public 'user_pass' => string '$P$Bgk/EP9mgd2wBgVpMyuNO968AhN0Pr.' (length=34)
          public 'user_nicename' => string 'ggggg' (length=5)
          public 'user_email' => string 'ffff@mail.ru' (length=12)
          public 'user_url' => string '' (length=0)
          public 'user_registered' => string '2019-07-26 09:19:28' (length=19)
          public 'user_activation_key' => string '' (length=0)
          public 'user_status' => string '0' (length=1)
          public 'display_name' => string 'ggggg' (length=5)
      public 'ID' => int 28
      public 'caps' => 
        array (size=1)
          'subscriber' => boolean true
      public 'cap_key' => string 'wp_capabilities' (length=15)
      public 'roles' => 
        array (size=1)
          0 => string 'subscriber' (length=10)
      public 'allcaps' => 
        array (size=3)
          'read' => boolean true
          'level_0' => boolean true
          'subscriber' => boolean true
      public 'filter' => null
      private 'site_id' => int 1
  2 => 
    object(WP_User)[10004]
      public 'data' => 
        object(stdClass)[10027]
          public 'ID' => string '27' (length=2)
          public 'user_login' => string 'rrr' (length=3)//LOGIN
          public 'user_pass' => string '$P$BTkLRcekEWGuZawB7fDuTN8Iq/8wM71' (length=34)
          public 'user_nicename' => string 'rrr' (length=3)
          public 'user_email' => string 'nilll@mail.ru' (length=13)
          public 'user_url' => string '' (length=0)
          public 'user_registered' => string '2019-07-26 09:07:11' (length=19)
          public 'user_activation_key' => string '' (length=0)
          public 'user_status' => string '0' (length=1)
          public 'display_name' => string 'rrr' (length=3)
      public 'ID' => int 27
      public 'caps' => 
        array (size=1)
          'subscriber' => boolean true
      public 'cap_key' => string 'wp_capabilities' (length=15)
      public 'roles' => 
        array (size=1)
          0 => string 'subscriber' (length=10)
      public 'allcaps' => 
        array (size=3)
          'read' => boolean true
          'level_0' => boolean true
          'subscriber' => boolean true
      public 'filter' => null
      private 'site_id' => int 1
0
Невнимательный
 Аватар для ft4l
3107 / 1277 / 358
Регистрация: 08.02.2013
Сообщений: 7,457
Записей в блоге: 2
29.07.2019, 14:12
Лучший ответ Сообщение было отмечено Kazer как решение

Решение

Как-то не очень помогло var_dump() .)
Насколько понял нужно что-то с записью найденных двух первых значений и с последующим удалением совпадений
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
$ARR = array();
function JSO_dec ($var) {
    return json_decode (trim ($var, '"'), true);
}
 
$CARDS = array();
function verify_CARDS (&$arr) {
    global $CARDS;
    foreach(array('cards1','cards2','cards3') AS $k){
        $KEY = $arr[$k][0] .':'. $arr[$k][1]; // Ключ типа 'Ucjoba:Kniga'
        if (isset($CARDS[$KEY])) {
            unset $arr[$k];
        }
        else $CARDS[$KEY] = ''; //Пустое значение с ключём
    }
}
$uq = new WP_User_Query( $params );
if ( ! empty( $uq->results ) ) {
    foreach ( $uq->results as $k=>$u ) {
        $ARR[$k]['ID'] = $u->ID;
        $ARR[$k]['user_email'] = $u->user_email;
        $ARR[$k]['meta'] = array_map('JSO_dec', get_user_meta( $u->ID, 'json' ));
        // здесь я не понял или перегоняется в json и обратно
        for($i=0;isset($ARR[$k]['meta'][$i]);++$i) {
            verify_CARDS($ARR[$k]['meta'][$i]);
        }
    }
echo '<XMP>';
var_dump($ARR);
echo '--------------'."\n";
var_dump($CARDS);
echo '</XMP>';
}
Не проверял, чисто схематически

Добавлено через 7 минут
забыл ++$i в for // добавил
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2019, 14:12
Помогаю со студенческими работами здесь

Минимальный элемент, повторяющийся максимальное количество раз в массиве
Привет всем. Мне нужно вывести минимальный элемент, повторяющийся максимальное количество раз в массиве. С поиском элемента, повторяющегося...

Как найти в массиве самый часто повторяющийся элемент.
Имееться массив заполненый записями фамилий.Нужно установить какая фамилия повторяеться чаще всего.!Срочно надо...Помогите пожалуйста!

В одномерном массиве найти элемент, повторяющийся максимальное число раз
В одномерном массиве найти элемент, повторяющийся максимальное число раз. Если их несколько, то вывести одно из них.

Найти в массиве наиболее повторяющийся элемент и подсчитать количество его повторений
Задача звучит так. Введите массив символов из 11 элементов. Определить самый часто встречающийся символ и количество его повторений. ...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru