Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сравнение массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
narek.asatryan
Отправлено: 05 Апреля, 2019 - 16:36:15
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2019  


Помог: 0 раз(а)




всем доброго дня
помогите пожалуйста новичку
есть 2 массива
Спойлер (Отобразить)

1.как можно сравнить 2 массива,взять в массив например то что в 2ом массиве нет
2.как вивести как переменную
с array_diff(array1,array2); не работает или у мены кривые руки Радость
буду всем признателен за помощь


Отредактировано модератором: Строитель, 05 Апреля, 2019 - 16:50:05
Используйте кнопки форматирования PHP.
 
 Top
andrewkard
Отправлено: 05 Апреля, 2019 - 17:21:23
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Как вариант перегнать в одномерные массивы и сравнить:
PHP:
скопировать код в буфер обмена
  1. $data_1 = [
  2.     ['target'=>'10.0.0.6/32','max-limit'=>'7000000/7000000'],
  3.     ['target'=>'192.168.1.98/32','max-limit'=>'20000000/20000000'],
  4. ];
  5. $data_2 = [
  6.     ['target'=>'192.168.1.98/32','max-limit'=>'20000000/20000000'],
  7.     ['target'=>'192.168.1.251/32','max-limit'=>'20000000/20000000'],
  8. ];
  9.  
  10. $d1 = [];
  11. $d2 = [];
  12. foreach ($data_1 as $index => $rows){
  13.     foreach ($rows as $key => $data){
  14.         $d1[$index.$key] = $data;
  15.     }
  16. }
  17. foreach ($data_2 as $index => $rows){
  18.     foreach ($rows as $key => $data){
  19.         $d2[$index.$key] = $data;
  20.     }
  21. }
  22.  
  23. print_r($d1);
  24. print_r($d2);
  25.  
  26. print_r(array_diff($d2,$d1));

(Добавление)
Также может помощь пользовательское сравнение
PHP:
скопировать код в буфер обмена
  1. function uDiff($a, $b){
  2.     return strcmp($a['target'],$b['target']);
  3. }
  4.  
  5. $diff = array_udiff($data_2, $data_1, 'uDiff');
  6. print_r($diff);
 
 Top
narek.asatryan
Отправлено: 05 Апреля, 2019 - 19:13:04
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2019  


Помог: 0 раз(а)




andrewkard пишет:
Как вариант перегнать в одномерные массивы и сравнить:
PHP:
скопировать код в буфер обмена
  1. $data_1 = [
  2.     ['target'=>'10.0.0.6/32','max-limit'=>'7000000/7000000'],
  3.     ['target'=>'192.168.1.98/32','max-limit'=>'20000000/20000000'],
  4. ];
  5. $data_2 = [
  6.     ['target'=>'192.168.1.98/32','max-limit'=>'20000000/20000000'],
  7.     ['target'=>'192.168.1.251/32','max-limit'=>'20000000/20000000'],
  8. ];
  9.  
  10. $d1 = [];
  11. $d2 = [];
  12. foreach ($data_1 as $index => $rows){
  13.     foreach ($rows as $key => $data){
  14.         $d1[$index.$key] = $data;
  15.     }
  16. }
  17. foreach ($data_2 as $index => $rows){
  18.     foreach ($rows as $key => $data){
  19.         $d2[$index.$key] = $data;
  20.     }
  21. }
  22.  
  23. print_r($d1);
  24. print_r($d2);
  25.  
  26. print_r(array_diff($d2,$d1));

(Добавление)
Также может помощь пользовательское сравнение
PHP:
скопировать код в буфер обмена
  1. function uDiff($a, $b){
  2.     return strcmp($a['target'],$b['target']);
  3. }
  4.  
  5. $diff = array_udiff($data_2, $data_1, 'uDiff');
  6. print_r($diff);


очень благодарен за помощь но эти 2 переменные 'target' и 'max-limit' должни одновременно сравнятся,у меня так задуманно если 'target' && 'max-limit' соотвествуют то выполнят 1 задачу,если target совподает а max-limit нет то 2 задачу и если нечего не совподает то 3 задачу,
 
 Top
andrewkard
Отправлено: 08 Апреля, 2019 - 09:31:36
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




narek.asatryan пишет:
у меня так задуманно

в цикле пробежитесь и сравните
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB