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]   

> Описание: Сравнение массивов
slmzig
Отправлено: 19 Января, 2013 - 14:02:05
Post Id


Новичок


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


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




Есть два массива
PHP:
скопировать код в буфер обмена
  1. $actualResult=array('1'=>'1',
  2.                                         '2'=>'2',
  3.                                         '3'=>'3',
  4.                                         '4'=>'4',
  5.                                         '7'=>'7'
  6. );
  7. $expectedResult=array('1'=>'1',
  8.                                         '2'=>'2',
  9.                                         '3'=>'3',
  10.                                         '5'=>'5');


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

У меня пока только так дальше незнаю(((
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $actualResult=array('1'=>'1',
  3.                                         '2'=>'2',
  4.                                         '3'=>'3',
  5.                                         '4'=>'4',
  6.                                         '7'=>'7'
  7. );
  8. $expectedResult=array('1'=>'1',
  9.                                         '2'=>'2',
  10.                                         '3'=>'3',
  11.                                         '5'=>'5');
  12. foreach($actualResult as $key => $value)
  13. {
  14.         foreach($actualResult as $key2 => $value2)
  15.         {
  16.         if ($actualResult[$key]==$expectedResult[$key2])
  17.                 {
  18.        
  19.                 }
  20.         }
  21. }                              
  22.  
  23. ?>


Отредактировано модератором: Саныч, 19 Января, 2013 - 16:15:27
 
 Top
opadai
Отправлено: 19 Января, 2013 - 14:28:23
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Янв. 2013  


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $actualResult=array('1'=>'1','2'=>'2','3'=>'3','4'=>'4','7'=>'7'
  3. );
  4. $expectedResult=array('1'=>'1','2'=>'2','3'=>'3','5'=>'5');
  5. $result = array_diff_assoc($actualResult, $expectedResult);
  6.  
  7. print_r($result);
  8. или так на крайняк
  9. $actualResult=array('1'=>'1','2'=>'2','3'=>'3','4'=>'4','7'=>'7');
  10. $expectedResult=array('1'=>'1','2'=>'2','3'=>'3','5'=>'5');
  11. var_dump(array_diff_key($actualResult, $expectedResult));
  12.  
  13.  

(Отредактировано автором: 19 Января, 2013 - 14:34:03)

 
 Top
slmzig
Отправлено: 19 Января, 2013 - 14:58:54
Post Id


Новичок


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


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




opadai пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $actualResult=array('1'=>'1','2'=>'2','3'=>'3','4'=>'4','7'=>'7'
  3. );
  4. $expectedResult=array('1'=>'1','2'=>'2','3'=>'3','5'=>'5');
  5. $result = array_diff_assoc($actualResult, $expectedResult);
  6.  
  7. print_r($result);
  8. или так на крайняк
  9. $actualResult=array('1'=>'1','2'=>'2','3'=>'3','4'=>'4','7'=>'7');
  10. $expectedResult=array('1'=>'1','2'=>'2','3'=>'3','5'=>'5');
  11. var_dump(array_diff_key($actualResult, $expectedResult));
  12.  
  13.  


спасибо но не то....(
 
 Top
opadai
Отправлено: 19 Января, 2013 - 15:17:03
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Янв. 2013  


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




PHP:
скопировать код в буфер обмена
  1. SUPER_ARRay_sort_multisort_megamozg($actualResult, $expectedResult);

(Отредактировано автором: 19 Января, 2013 - 15:17:33)

 
 Top
slmzig
Отправлено: 19 Января, 2013 - 15:28:29
Post Id


Новичок


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


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




opadai пишет:
PHP:
скопировать код в буфер обмена
  1. SUPER_ARRay_sort_multisort_megamozg($actualResult, $expectedResult);


очень смешно)))
(Добавление)
opadai пишет:
PHP:
скопировать код в буфер обмена
  1. SUPER_ARRay_sort_multisort_megamozg($actualResult, $expectedResult);


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $actualResult=array('1'=>'1',
  3.                                         '2'=>'2',
  4.                                         '3'=>'3',
  5.                                         '4'=>'4',
  6.                                         '7'=>'7'
  7. );
  8. $expectedResult=array('1'=>'1',
  9.                                         '2'=>'2',
  10.                                         '3'=>'3',
  11.                                         '5'=>'5');
  12. foreach($actualResult as $key => $value)
  13. {
  14.         foreach($actualResult as $key2 => $value2)
  15.         {
  16.         if ($actualResult[$key]==$expectedResult[$key2])
  17.                 {
  18.                         $actualResult2[$key]=$actualResult[$key];
  19.                         $expectedResult2[$key2]=$expectedResult[$key2];
  20.                 }
  21.         }
  22. }      
  23.  
  24. ?>

вот то что я хотел, спасибо что никто не помог(
(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $actualResult=array('1'=>'1',
  3.                                         '8'=>'8',
  4.                                         '2'=>'2',
  5.                                         '3'=>'3',
  6.                                         '4'=>'4',
  7.                                         '7'=>'7'
  8. );
  9. $expectedResult=array('1'=>'1',
  10.                                         '2'=>'2',
  11.                                         '3'=>'3',
  12.                                         '5'=>'5',
  13.                                         '7'=>'7',
  14.                                         '8'=>'8');
  15. foreach($actualResult as $key => $value)
  16. {
  17.         foreach($actualResult as $key2 => $value2)
  18.         {
  19.         if ($actualResult[$key]==$expectedResult[$key2])
  20.                 {
  21.                         $actualResult2[$key]=$actualResult[$key];
  22.                         $expectedResult2[$key2]=$expectedResult[$key2];
  23.                 }
  24.         }
  25. }                              
  26. $actualResult=$actualResult2;
  27. $expectedResult=$expectedResult2;


ну вот так - равные значение перезаписываются в массивы, но хотелось б упростить, возможно ли не использовать переменные $actualResult2 и $expectedResult2 а напрямую перезаписывать в $actualResult и $actualResult2????? Пожалуйста подскажите Однако


Отредактировано модератором: Саныч, 19 Января, 2013 - 16:15:57
 
 Top
Саныч Модератор
Отправлено: 19 Января, 2013 - 16:53:15
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Фигню вы городите. array_intersect_key() решит вашу проблему.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
slmzig
Отправлено: 19 Января, 2013 - 16:58:46
Post Id


Новичок


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


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




Саныч пишет:
Фигню вы городите. array_intersect_key() решит вашу проблему.


почему фигню? array_intersect_key() возвращает один массив, а мне нужно два чтоб их потом проверить на assertEquals() phpunit????
 
 Top
LIME
Отправлено: 19 Января, 2013 - 18:48:02
Post Id


Активный участник


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


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




slmzig фигню фигню

 
 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