С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/41: Рейтинг темы: голосов - 41, средняя оценка - 4.93
 Аватар для webphp
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327

Вывести повторяющиеся значения массива

16.02.2014, 13:59. Показов 7805. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Запутался в край, надеюсь на вашу помощь, может просто подтолкнете.
В таблице имеется список записей, на выходе получаю следующий массив состоящий из более чем 1000 строк.
Самое важное поле (api_id)
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
Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [api_id] => 13569
            [name] => название
            [alt_name] => url
            [image] => pic
        )
 
    [1] => stdClass Object
        (
            [id] => 2
            [api_id] => 5467
            [name] => название
            [alt_name] => url
            [image] => pic
        )
 
    [2] => stdClass Object
        (
            [id] => 3
            [api_id] => 3649
            [name] => название
            [alt_name] => url
            [image] => pic
        )
)
По api другого сайта получаю данные в виде следующего массива
PHP
1
2
3
4
5
6
7
8
9
10
11
12
Array
(
    [0] => stdClass Object
        (
            [id_pit] => 3649
        )
 
    [1] => stdClass Object
        (
            [id_pit] => 8481
        )
)
Нужно сравнить два массива по id_api=id_pit
И вывести информацию о найденных элементах из первого массива.

Т.е. в данном примере получить
PHP
1
2
3
4
5
6
7
8
9
10
11
Array
( 
    [2] => stdClass Object
        (
            [id] => 3
            [api_id] => 3649
            [name] => название
            [alt_name] => url
            [image] => pic
        )
)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2014, 13:59
Ответы с готовыми решениями:

Самый "быстрый" способ удаления из массива повторяющиеся значения
Здравствуйте! В интернете есть много разных вариантов, но мне нужен тот, который будет выполнятся быстрее всего. И вот интересно,...

Вывести значения массива
подскажите пожалуйста, как вывест значения вот такого массива Array ( => Array ( ...

Вывести значения одномерного массива
Помогите пожалуйста Предположим есть массив $arr = array(20, 10, 1, 35, 40); как вывести сначала все положительные значения, затем...

10
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
16.02.2014, 14:27
http://us3.php.net/manual/ru/f... search.php надеюсь поможет. Функция возвращает ключ найденного элемента массива. Думаю вам стоит перебирать массив (содержащий ассоциативные массивы) через foreach и прогонять по нему функцией array_search(). Когда вернет ключ — останавливайте цикл через break и записывайте, к примеру, в переменную.
1
 Аватар для webphp
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327
16.02.2014, 16:35  [ТС]
как вариант да, можно попробовать, но это как то кастыльно все, если учесть что мне нужно из 1000 массивов получить скажем 100 совпадений. Неужели нет более простого способа?
0
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
16.02.2014, 16:58
webphp, возможно, но я не вижу другого выхода.
0
 Аватар для webphp
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327
16.02.2014, 17:15  [ТС]
вобщем с двумя функциями сделал, в первой перебираю полученный массив и отправляю во вторую функцию которая содержит все записи из базы, перебираю все записи из базы и ищу в них api_id, если нахожу то загоняю в переменную информацию.
Как то кастыльно конечно, работает, но все же в php есть функция которая удаляет повторяющиеся элементы массива, почему же не сделать функцию которая выводит повторяющиеся элементы массива.

Было бы все намного проще.
1. Склеил два массива, а можно даже и не клеить и пропустить 1 шаг
2. Перебрал массив функцией с возможностью указания из какого массива выводить информацию
типо
PHP
1
array_repetition($arr, $arr2, 1)
где 1 выводил бы инфу из arr, а 2 выводил бы инфу из arr2

Было бы супер увидеть такую фичу дабы не ломать голову и не строить костыли.
0
32 / 31 / 21
Регистрация: 13.07.2014
Сообщений: 374
08.02.2020, 20:57
Спустя 6 лет, проблема актуальна)
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
08.02.2020, 21:10
Цитата Сообщение от webphp Посмотреть сообщение
почему же не сделать функцию которая выводит повторяющиеся элементы массива.
array_count_values

Добавлено через 1 минуту
вопрос в том, как объект сравнивать?

Добавлено через 1 минуту
вот еще про одинаковые элементы
array_unique
0
Надуваю лягушек
Эксперт PHP
 Аватар для Царь Бабай
289 / 219 / 93
Регистрация: 01.05.2014
Сообщений: 742
08.02.2020, 21:10
Быть такого не может)))) я про 6 лет проблемы))))
0
32 / 31 / 21
Регистрация: 13.07.2014
Сообщений: 374
08.02.2020, 21:13
PHP
1
2
3
4
5
$first = array(1, 2, 3, 'none', 5, 6, 7, 8);
$second = array(3, 4, 5);
 
// нужен результат совпадений 
$res = array(3,5);
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
08.02.2020, 21:17
ну судя по нику проблема уже у другого товарища. надо помочь
вот функция построенная на встроенных php функциях (они быстрее работают, чем скриптовые):
PHP
1
2
3
4
function array_find_twins($A) {
   $N = array_flip(array_count_values($A)); 
   return isset($N[2]) ? $N[2] : FALSE;
}
попробуйте, сам не тестировал

Добавлено через 3 минуты
а нет, это для одного массива

Добавлено через 16 секунд
сейчас наваяем
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
08.02.2020, 21:34
WeMeSder,
PHP
1
2
3
4
$first = array(1, 2, 3, 'none', 5, 6, 7, 8);
$second = array(3, 4, 5);
 
print_r(array_values(array_intersect($first, $second)));
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2020, 21:34
Помогаю со студенческими работами здесь

Как вывести из массива уникальные значения?
Доброго времени суток, уважаемые. Подскажите нубу, как можно из массива вывести лишь оригинальные значения? То есть, имеем массив: ...

Найти повторяющиеся значения перменной
Всем доброго времени суток! Скажите пожалуйста, можно ли как-то определить, какие значения переменной повторяются в цикле? То есть например...

Не записывать повторяющиеся значения в сессионный массив
Доброй ночи! Подскажите как правильно запретить добавление значений в сессионный массив. Вот код: <? session_start(); if(...

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

Удалить не повторяющиеся элементы массива
Здравствуйте! нужна функция типа array_keys(array_flip()) наоборот у меня есть массив В результате должно выйти пробовал вот...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru