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]   

> Описание: Помогите, не могу никак вникнуть.
ZeiZ
Отправлено: 22 Октября, 2010 - 05:04:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009  
Откуда: Москва


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




Добрый день.

Нужно вывести только те значения массива, которые повторяются в нем $i раз.

Например

Array (
[0] => 30
[1] => 21
[2] => 161
[3] => 21
[4] => 163
[5] => 21
[6] => 30
[7] => 110
[8] => 111
[9] => 21
[10] => 30
)

для $i=3 вывести Array ([0] => 30 [1] => 21)
для $i=4 вывести Array()

ключи не важны, важны только значения.

Или т.к. массив создается постепенно (количество добавлений новых "порций" значений в массив и есть $i), то можно сравнить первую порцию со второй, оставив только те значения которые пересекаются в обоих массивах.

то есть что то такое (на коленке):

PHP:
скопировать код в буфер обмена
  1.  
  2. for ... {
  3. if...
  4. {... $b = ...
  5. if(isset($a)... // сравнить ее с $b и оставить только пересекающиеся значения
  6. else $a = $b
  7. }
  8. elseif ...
  9. {
  10. $b = ...
  11. if(isset($a)... // сравнить ее с $b и оставить только пересекающиеся значения
  12. else $a = $b
  13. }
  14. elseif ...
  15. {
  16. $b = ...
  17. if(isset($a)... // сравнить ее с $b и оставить только пересекающиеся значения
  18. else $a = $b
  19. }
  20. elseif ...
  21. {
  22. $b = ...
  23. if(isset($a)... // сравнить ее с $b и оставить только пересекающиеся значения
  24. else $a = $b
  25. }
  26.  
  27. } // /-for
  28.  

знаю про array_intersect(), но если $a нет общих пересечений с $b, то функция оставляет $a , а мне нужно, чтобы $a в таком случае тоже выпадала

или же как писал вначале

PHP:
скопировать код в буфер обмена
  1.  
  2. for ... {...} // создаем массив $a
  3.  
  4. // делаем какие-то преобразования зная $i
  5.  


вот написал, работает, но не велосипед ли это?

PHP:
скопировать код в буфер обмена
  1.  
  2.     for($j=1;$j<$i;$j++)
  3.     {
  4.         $a = array_unique($b);
  5.         foreach($a as $k => $v)
  6.         {
  7.             if (in_array($a[$k],$b)) unset($b[$k]);
  8.         }
  9.     }
  10.  

(Отредактировано автором: 22 Октября, 2010 - 05:41:48)

 
 Top
EuGen Администратор
Отправлено: 22 Октября, 2010 - 10:12:20
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
ZeiZ
Отправлено: 22 Октября, 2010 - 12:12:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009  
Откуда: Москва


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




EuGen пишет:
http://php.su/functions/?array-count-values


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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB