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

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

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

Author24 — интернет-сервис помощи студентам
Дорого времени суток. Вообще я начинающий в 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2016, 01:22
Ответы с готовыми решениями:

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

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

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

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

13
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
24.03.2016, 01:32 2
самое простое - наглым перебором! А вообще погугли команды работы с таблицами! там МНОГО команд сравнения есть - может что и подойдет...
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
24.03.2016, 13:33 3
Цитата Сообщение от 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);
Код
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  [ТС] 4
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 5
Цитата Сообщение от Mothur Посмотреть сообщение
о, и правда. Извинюсь - скопировал и забыл исправить.
Но это не отменяет всего мной вышесказанного.
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
24.03.2016, 16:20  [ТС] 6
Цитата Сообщение от 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 7
...
1
33 / 4 / 1
Регистрация: 29.05.2014
Сообщений: 144
24.03.2016, 16:45  [ТС] 8
Tester64, что?

Добавлено через 7 минут
Tester64, я в чём-то не прав?
0
458 / 423 / 116
Регистрация: 15.02.2012
Сообщений: 1,903
24.03.2016, 18:35 9
Цитата Сообщение от 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  [ТС] 10
tgarl,
ну так и не нужно мне создавать вложенность двух одинаковых ключей. Я сознательно делаю так, поскольку таким образом можно создавать группировку. Например, из БД получать значения и забивать, например, название группы в первый уровень в качестве ключа, а элементы группы - как значение.

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

Так вот, если сравнивать такой массив со вторым массивом с помощью == - это нормально? В смысле, у меня вроде как работает....
0
458 / 423 / 116
Регистрация: 15.02.2012
Сообщений: 1,903
24.03.2016, 18:50 11
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  [ТС] 12
Цитата Сообщение от 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 13
Цитата Сообщение от 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 14
Цитата Сообщение от Mothur Посмотреть сообщение
Tester64, что?
Добавлено через 7 минут
Tester64, я в чём-то не прав?
просто пока я набирал ответ, за меня ответили! повторять ответ "как у других" не стал, удалить сохраненное не смог, заменил на "...".

Цитата Сообщение от pav1uxa Посмотреть сообщение
Так а чем плохо сравнивать их == ?
Ничем, но простым перебором или спецфункциями можно получить недостающие/лишние поля!
http://php.net/manual/ru/book.array.php
0
25.03.2016, 07:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2016, 07:30
Помогаю со студенческими работами здесь

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

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

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

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

Сортировка масивов
Есть последовательность, разместить ее елементы, которые попадают в интервал от A до B, в порядке...

Сортировка масивов
Здраствуйте можете пожалйста помочь с сортировокй ономерных и двох мерных масивов.НАм задили...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru