За последние 24 часа нас посетили 21762 программиста и 1023 робота. Сейчас ищут 690 программистов ...

Сравнение каждого эллемента массива с массивом

Тема в разделе "Сделайте за меня", создана пользователем Abandoned, 11 окт 2019.

  1. Abandoned

    Abandoned Новичок

    С нами с:
    11 окт 2019
    Сообщения:
    2
    Симпатии:
    0
    Есть массив arr=[1,2,3,4,2].
    Как нужно пройтись по нему, чтобы оставить только повторяющееся значение arr=[2,2]
     
  2. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
    попробуйте так

    Код (Text):
    1. <?php
    2.  
    3. $numbers = [1,2,3,4,2];
    4.  
    5. // считаем кол-во каждого элемента
    6. $counts = array_count_values($numbers);
    7.  
    8. // удаляем неуникальные элементы
    9. foreach($counts as $value => $count) {
    10.     if($count == 1 && ($key = array_search($value, $numbers)) !== false) {  
    11.         unset($numbers[$key]);
    12.     }
    13. }
    14.  
    15. var_dump($numbers);
     
  3. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    а я вот так наговнокодил =))
    PHP:
    1. $input = [1,2,3,2,4];
    2. $array = array_diff(array_count_values($input), array(1));
    3. $result = [];
    4.  
    5. if( count($array) > 0 )
    6. {
    7.     foreach($array as $key => $val)
    8.     {
    9.         for ($i = 0; $i < $val; $i++)
    10.         {
    11.             $result[] = $key;
    12.         }
    13.     }
    14. }
    15.  
    16. print_r($result);
     
  4. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Коллеги, как-то странно ... начали за здравие, а закончили за упокой. :(
    Всё проще:
    PHP:
    1. $input = [1,2,3,2,4];
    2. $result = array_intersect($input, array_flip(array_diff(array_count_values($input), [1])));
    3. //  array(2) {
    4. //    [1] => int(2)
    5. //    [3] => int(2)
    6. //  }
     
  5. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
    а если массив будет такого вида?
    Код (Text):
    1. $input = [1,2,3,2,4,1];
    2 совпавшие единицы не найдет. по мне так цель была любые дубли найти
     
  6. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
  7. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Использовать 4 php функции чтобы найти 2 числа, это конечно страшно!
    А можно услышать(увидеть) задачу, где это необходимо?