Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
38 / 37 / 29
Регистрация: 02.12.2013
Сообщений: 243
1

Сравнение двух массивов

02.11.2016, 20:11. Показов 2915. Ответов 6
Метки нет (Все метки)

Здравствуйте, как сравнить 2 вот таких, к примеру массива и узнать они идентичны или нет?

PHP
1
2
$array1 = ['яблоко','апельсин','банан'];
$array2 = ['банан','апельсин','яблоко','груша'];
ну то есть они могут быть в разном порядке и значения из $array1 могут не существовать в $array2(и аналогично в обратном);
P.S. array_diff - cравнивает array1 с одним или несколькими другими массивами и возвращает значения из array1, которые отсутствуют во всех других массивах.

Т.е. нужно array_diff использовать в двух направлениях: array_diff( $array1, $array2 ) и array_diff( $array2, $array1 ) ?
нет ли какого-то более разумного решения?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2016, 20:11
Ответы с готовыми решениями:

Сравнение двух массивов
Появилась необходимость сравнить значения двух массивов. Я в курсе о таких штуках, которые...

Сравнение двух массивов
есть два массива: $irregular_verbs_second = array(0 => 'was', 1 => 'beat',); $r = array(0 =>...

Сравнение элементов двух массивов
Здравствуйте. Необходимо сравнить элементы двух массивов (всё тянется из бд), и если элементы...

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

6
502 bad gateway
Эксперт PHP
4525 / 3682 / 1543
Регистрация: 24.04.2014
Сообщений: 10,843
02.11.2016, 20:31 2
Лучший ответ Сообщение было отмечено kposs как решение

Решение

А чем это решение не устраивает?

Добавлено через 8 минут
Можно несколько оптимизировать - сравнить размерности массивов, если совпадают то достаточно провксти 1 проверку array diff
1
38 / 37 / 29
Регистрация: 02.12.2013
Сообщений: 243
02.11.2016, 21:11  [ТС] 3
Jewbacabra, просто массивы у меня ГРОМАДНЫЕ, около 1500 элементов в каждом

Добавлено через 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function check_customized_theme(){
/*
 
...
 
*/
 
$ta = ['general'=>'gen', 'theme'=>'th'];
    foreach( $ta as $old_data => $new_data ){
        foreach( ${$old_data} as $k => $v ){
            if( is_array($v) ){
                foreach( $v as $k2 => $v2 ){
                    if( is_array($v2) ){
                        foreach( $v2 as $k3 => $v3 ){
                            if( is_array($v3) ){
                                foreach( $v3 as $k4 => $v4 ){
                                    if( is_array($v4) ){
                                        foreach( $v4 as $k5 => $v5 ){
                                            if( is_array($v5) ){
                                                foreach( $v5 as $k6 => $v6 ){
                                                    if( is_array($v6) ){
                                                        foreach( $v6 as $k7 => $v7){
                                                            ${$new_data}[] = $k.$k2.$k3.$k4.$k5.$k6.$k7.$v7;
                                                        }
                                                    }else{
                                                        ${$new_data}[] = $k.$k2.$k3.$k4.$k5.$k6.$v6;
                                                    }
                                                }
                                            }else{
                                                ${$new_data}[] = $k.$k2.$k3.$k4.$k5.$v5;
                                            }
                                        }
                                    }else{
                                        ${$new_data}[] = $k.$k2.$k3.$k4.$v4;
                                    }
 
                                }
                            }else{
                                ${$new_data}[] = $k.$k2.$k3.$v3;
                            }
                        }
                    }else{
                        ${$new_data}[] = $k.$k2.$v2;
                    }
                }
            }else{
                ${$new_data}[] = $k.$v;
            }
        }
    }
 
    $search1 = array_diff( $gen, $th );
    if( !empty($search1) )
        return true;
 
    $search2 = array_diff( $th, $gen );
    if( !empty($search2) )
        return true;
 
    return false;
}
0
502 bad gateway
Эксперт PHP
4525 / 3682 / 1543
Регистрация: 24.04.2014
Сообщений: 10,843
02.11.2016, 21:35 4
Цитата Сообщение от kposs Посмотреть сообщение
В итоге вот, может кому пригодиться,
Судя по такой вложенности и использованию динамических переменных с архитектурой большие проблемы
0
38 / 37 / 29
Регистрация: 02.12.2013
Сообщений: 243
02.11.2016, 21:39  [ТС] 5
Jewbacabra, да нет, как раз наоборот, сложная архитектура по надобности
0
Jewbacabra
02.11.2016, 22:12
  #6

Не по теме:

Цитата Сообщение от kposs Посмотреть сообщение
сложная архитектура по надобности
Он не сложная, она неправильная.

0
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
02.11.2016, 23:23 7
Цитата Сообщение от kposs Посмотреть сообщение
сложная архитектура по надобности
обычно такой кошмар решается рекурсией:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$new_data = '';
 
function slojnayaArhitectura($old){
    global $new_data;
    foreach($old as $k => $v){
        if(is_array($v)){
            slojnayaArhitectura($v);
        }
    }
    $new_data.=$k;
}
slojnayaArhitectura($ta);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2016, 23:23

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

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

Сравнение массивов
Всем привет. Имею: 1. $array_1(=>Худой=>Нормальный=>Толстый); 2.$array_2 (=>0=>1); 3.$num =...

Сравнение массивов
У меня есть 2 массива, которые берут данные с базы данных MySQL. В обоих массивах есть одинаковые...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.