Есть массив arr=[1,2,3,4,2]. Как нужно пройтись по нему, чтобы оставить только повторяющееся значение arr=[2,2]
попробуйте так Код (Text): <?php $numbers = [1,2,3,4,2]; // считаем кол-во каждого элемента $counts = array_count_values($numbers); // удаляем неуникальные элементы foreach($counts as $value => $count) { if($count == 1 && ($key = array_search($value, $numbers)) !== false) { unset($numbers[$key]); } } var_dump($numbers);
а я вот так наговнокодил =)) PHP: $input = [1,2,3,2,4]; $array = array_diff(array_count_values($input), array(1)); $result = []; if( count($array) > 0 ) { foreach($array as $key => $val) { for ($i = 0; $i < $val; $i++) { $result[] = $key; } } } print_r($result);
Коллеги, как-то странно ... начали за здравие, а закончили за упокой. Всё проще: PHP: $input = [1,2,3,2,4]; $result = array_intersect($input, array_flip(array_diff(array_count_values($input), [1]))); // array(2) { // [1] => int(2) // [3] => int(2) // }
а если массив будет такого вида? Код (Text): $input = [1,2,3,2,4,1]; 2 совпавшие единицы не найдет. по мне так цель была любые дубли найти
kazadai90: Глаз - алмаз, браво. Так сработает: PHP: $input = [1,2,3,2,4,1]; $result = array_intersect($input, array_keys(array_diff(array_count_values($input), [1]))); /* array(4) { [0] => int(1) [1] => int(2) [3] => int(2) [5] => int(1) } */
Использовать 4 php функции чтобы найти 2 числа, это конечно страшно! А можно услышать(увидеть) задачу, где это необходимо?