За последние 24 часа нас посетили 19529 программистов и 1633 робота. Сейчас ищет 1871 программист ...

Удалить из массива дубликаты. Не array_unique

Тема в разделе "PHP для новичков", создана пользователем domio, 4 авг 2017.

  1. domio

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

    С нами с:
    18 дек 2012
    Сообщения:
    35
    Симпатии:
    5
    Добрый день.
    Необходимо удалить из масcива дубликаты.
    Вот например есть такой массив [8,8,8,8,9,8,8] или [0,0,0,0,0.12,0,0]

    В первом случае необходимо удалить все 8ки и оставить только 9, а в другом соответственно оставить 0.12.

    PHP:
    1. function removalRepeatingElement($arr)
    2. {
    3.     $arr = array_count_values(array_map('strval', $arr));
    4.     foreach ($arr as $k => $v) {
    5.         if ($v > 1) {
    6.             unset($arr[$k]);
    7.         }
    8.     }
    9.     return array_flip($arr);
    10. }
    Моя реализация такова. Возможно у кого-то есть идеи как оптимизировать? Ну или натолкните на годную мысль.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Может просто перевернуть массив и он станет уникальный, так как ключи могут быть только уникальные и потом обратно его перевернуть и всё
     
  3. domio

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

    С нами с:
    18 дек 2012
    Сообщения:
    35
    Симпатии:
    5
    Нужно полностью удалить дублирующие записи, а не оставить одну.

    [1,1,1,1,2,1,1,1] -----> [2]
     
  4. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Результат лежит в $newArray
    PHP:
    1. $array = array(1, 1, 2, 1, 1, 3, 1, 1, 4, 4, 5);
    2.     sort($array);
    3.     for ($i = 0; $i <= count($array)-1; $i++) {
    4.         if (($array[$i]!=$array[$i-1])&&($array[$i]!=$array[$i+1])){
    5.             $newArray[] = $array[$i];
    6.         }
    7.     }