Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144

Сравнение многомерных масивов

24.03.2016, 01:22. Показов 1859. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дорого времени суток. Вообще я начинающий в php... И вот появилась необходимость сравнить между собой два оссоциативных массива, причём при сравнении нужно сравнивать как ключи, так и значения.

Например, есть массив $a и $b c разным порядком значений:

PHP
1
2
3
4
5
6
7
$a=[];
$a['f']=['jj'];
$a['f']=['kk'];
 
$b=[];
$a['f']=['kk'];
$a['f']=['jj'];
Но эти два массива равны. Как ключи, так и значения.
Как устроить такую проверку? Подскажите, пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.03.2016, 01:22
Ответы с готовыми решениями:

Сравнение двух многомерных массивов по ключам
Всем доброго времени суток. Есть такая задача. Массив 1 array(2) { => array(1) { => array(1) { ...

нужна помощь в С на тем одномерных и многомерных масивов
кто может и кому не очень трудно доходчиврс делать следующее задание 1.в одномерном масиве , с N действительных елементов вычислить ...

Сравнение масивов
Задача: Удалить из слова X те буквы, что используются при написании слова Y. прошу помочь мне с функцией сравнения массивов и...

13
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
24.03.2016, 01:32
самое простое - наглым перебором! А вообще погугли команды работы с таблицами! там МНОГО команд сравнения есть - может что и подойдет...
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
24.03.2016, 13:33
Цитата Сообщение от Mothur Посмотреть сообщение
Но эти два массива равны. Как ключи, так и значения.
Это 2 разных массива. Элементы с одинаковыми ключами перетираются.
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$a=[];
$a['f']=['jj'];
$a['f']=['kk'];
 
$b=[];
$b['f']=['kk'];
$b['f']=['jj'];
 
print_r($a);
print_r($b);
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array
(
    [f] => Array
        (
            [0] => kk
        )
 
)
Array
(
    [f] => Array
        (
            [0] => jj
        )
 
)

Не по теме:

Обратите внимение что в ВАШЕМ коде было 2 раза написано

PHP
1
2
$a['f']=['jj'];
$a['f']=['kk'];
вместо
PHP
1
2
$b['f']=['kk'];
$b['f']=['jj'];
во второй раз.

1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
24.03.2016, 14:40  [ТС]
pav1uxa,
о, и правда. Извинюсь - скопировал и забыл исправить.

PHP
1
2
3
4
5
6
7
$a=[];
$a['f']=['jj'];
$a['f']=['kk'];
 
$b=[];
$b['f']=['kk'];
$b['f']=['jj'];
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
24.03.2016, 15:29
Цитата Сообщение от Mothur Посмотреть сообщение
о, и правда. Извинюсь - скопировал и забыл исправить.
Но это не отменяет всего мной вышесказанного.
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
24.03.2016, 16:20  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
Но это не отменяет всего мной вышесказанного.
Цитата Сообщение от pav1uxa Посмотреть сообщение
Это 2 разных массива. Элементы с одинаковыми ключами перетираются.
Не понимаю. В массиве $a и $b одни и те же ключи и значения. Что значит перетираются?

Добавлено через 40 минут
pav1uxa,

Оказалось, можно просто их сравнить обычным оператором сравнения

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$array1=[];
$array1['4']=['1ппа'];
$array1['4']=['2вп'];
$array1['4']=['3вп'];
 
$array2=[]; 
$array2['4']=['1ппа'];
$array2['4']=['2вп'];
$array2['4']=['3вп'];
 
 
if ($array1==$array2) {
    echo "string";
};
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
24.03.2016, 16:32
...
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
24.03.2016, 16:45  [ТС]
Tester64, что?

Добавлено через 7 минут
Tester64, я в чём-то не прав?
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,952
24.03.2016, 18:35
Цитата Сообщение от Mothur Посмотреть сообщение
Что значит перетираются?
это значит что такая констукция
PHP
1
2
3
4
$array1=[];
$array1['4']=['1ппа'];
$array1['4']=['2вп'];
$array1['4']=['3вп'];
и
PHP
1
2
$array1=[];
$array1['4']=['3вп'];
это одно и тоже, только в первом случае элементу массива $array1['4'] присвоили значение 3 раза, а во второй 1 раз
не может существовать на одном уровне вложенности двух одинаковых ключей, если такой ключ уже есть значение заменится на новое
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
24.03.2016, 18:44  [ТС]
tgarl,
ну так и не нужно мне создавать вложенность двух одинаковых ключей. Я сознательно делаю так, поскольку таким образом можно создавать группировку. Например, из БД получать значения и забивать, например, название группы в первый уровень в качестве ключа, а элементы группы - как значение.

По факту у меня в массиве '4' три записи.
$array1['4']['1ппа', '2вп', '3вп'];

Так вот, если сравнивать такой массив со вторым массивом с помощью == - это нормально? В смысле, у меня вроде как работает....
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,952
24.03.2016, 18:50
PHP
1
2
3
4
$array1=[];
$array1['4']=['1ппа'];
$array1['4']=['2вп'];
$array1['4']=['3вп'];
и
PHP
1
$array1['4']['1ппа', '2вп', '3вп'];
это не одно и тоже
а так либо перебором сравнивать либо посмотрите функцию array_diff
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
24.03.2016, 18:59  [ТС]
Цитата Сообщение от tgarl Посмотреть сообщение
это не одно и тоже
я просто показывал, как формируется массив в моём случае

PHP
1
$query = "SELECT orders.id_gens_groups, orders.id_gens FROM orders WHERE orders.id_handlings = '$id_handlings'";
PHP
1
2
3
while ($myrow = $result->fetch_array(MYSQLI_ASSOC)) {
    $groups_orders_arr[$myrow['id_gens_groups']]=$myrow['id_gens'];
};
Получаю список из БД. В базе для каждой записи указан ИД гена и группа, к которому он (ген) относится. Мне нужно получить сортировку по группе. Так и делаю - с помощью массива. Отсеиваю - ИД одной группы в один подмассв, другой группы - в другой.

Функция возвращает отсутствующие значения... А если их нет (массив пуст) - значит массивы равны.
Я пробовал с этой функцией. Но со вложенными массивами не вышло что-то.
Так а чем плохо сравнивать их == ?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
24.03.2016, 19:46
Цитата Сообщение от Mothur Посмотреть сообщение
Так а чем плохо сравнивать их == ?
Ничем не плохо.
Цитата Сообщение от Mothur Посмотреть сообщение
Не понимаю. В массиве $a и $b одни и те же ключи и значения. Что значит перетираются?
То и значит:
PHP
1
2
3
4
$array1=[];
$array1['4']=['1ппа'];
$array1['4']=['2вп'];
$array1['4']=['3вп'];
и
PHP
1
2
$array1=[];
$array1['4']=['3вп'];
это одно и тоже
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
25.03.2016, 07:30
Цитата Сообщение от Mothur Посмотреть сообщение
Tester64, что?
Добавлено через 7 минут
Tester64, я в чём-то не прав?
просто пока я набирал ответ, за меня ответили! повторять ответ "как у других" не стал, удалить сохраненное не смог, заменил на "...".

Цитата Сообщение от pav1uxa Посмотреть сообщение
Так а чем плохо сравнивать их == ?
Ничем, но простым перебором или спецфункциями можно получить недостающие/лишние поля!
http://php.net/manual/ru/book.array.php
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.03.2016, 07:30
Помогаю со студенческими работами здесь

Сравнение двух многомерных массивов
Добрый день, помогите разобраться в простом примере работы с массивами ибо чтение теории заводит в еще бОльший тупик. Есть два листа с...

Сравнение многомерных массивов... Необходима свежая идея
есть StringGrid размеров n на m, над этим всем безобразим в течении долгого времени совершается перестановка всех строк и столбцов (кол-во...

Разработка/Морской бой/Сравнение данных в многомерных массивах
Добрый день. Во время создания морского боя (игрок против игрока) столкнулся с тем, что не получается сравнить значения массивов и если...

Приложение представляющее организацию многомерных вычислений многомерных массивов
Разработать приложение для Windows, представляющую организацию многомерных вычислений многомерных массивов. c#

Объединение масивов
Итак есть задание:&quot; n- количество масивов какие нужно обеденить, a- масив указателей на масивы которые нужно нужно обьеденить size -...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru