За последние 24 часа нас посетили 22802 программиста и 1242 робота. Сейчас ищет 701 программист ...

Убрать дубли из многомерного массива

Тема в разделе "Прочие вопросы по PHP", создана пользователем prm.lab.ru, 23 ноя 2017.

  1. prm.lab.ru

    prm.lab.ru Новичок

    С нами с:
    23 ноя 2017
    Сообщения:
    3
    Симпатии:
    0
    Всем доброго времени уважаемые форумчане!
    Бьюсь весь день не могу понять, как убрать дубли из массива, к примеру есть массив.
    PHP:
    1. $myArray = array(
    2.   array(
    3.     array("name"=>"Иванов И.И.", "age"=>"25", "email"=>"ivanov@mail.ru"),
    4.     array("name"=>"Иванов И.И.", "age"=>"25", "email"=>"ivanov@mail.ru")
    5.   ),
    6.   array(
    7.     array("name"=>"Иванова И.И.", "age"=>"25", "email"=>"ivanov@mail.ru"),
    8.     array("name"=>"Сидоров С.С.", "age"=>"47", "email"=>"sidorov@mail.ru")
    9.   )
    10. );
    Как убрать из него дубли и вывести только уникальные значения? И можно ли сравнивать только к примеру по "name"?
    Пробовал так
    PHP:
    1. $myArray=array_map("unserialize", array_unique(array_map("serialize", $myArray)));
    2. echo "<pre>";
    3.  
    4. print_r($myArray);
    Не работает.
    Пробовал так
    PHP:
    1. print_r(array_unique($myArray, SORT_REGULAR));
    Тоже не работает.
    В случае с двумерным массивом - дубли убирает. Что ни так делаю?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Рекурсию не используете.
     
  3. prm.lab.ru

    prm.lab.ru Новичок

    С нами с:
    23 ноя 2017
    Сообщения:
    3
    Симпатии:
    0
    Попробовал так
    PHP:
    1. function super_unique($array,$key)
    2. {
    3.    $temp_array = array();
    4.    foreach ($array as &$v) {
    5.        if (!isset($temp_array[$v[$key]]))
    6.        $temp_array[$v[$key]] =& $v;
    7.    }
    8.    $array = array_values($temp_array);
    9.    return $array;
    10. }
    Тоже - с таким массивом работает Array ( [0] => Array ( [name] => Иванов [age] => 25 ))
    А с таким не работает Array ( [0] => Array ( [0] => Array ( [name] => Иванов [age] => 25 )))

    Вроде же правильно всё должно быть? Или что-то я не правильно понял?
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Так, я мы знаем, что должно быть на входе. А что на выходе ожидается? тут три одинаковых записи есть, но в двух разных группах. Из трех одна должна остаться? Или уникализация только внутри группы должна идти? Или уникальность всей группы проверяется?
     
  5. prm.lab.ru

    prm.lab.ru Новичок

    С нами с:
    23 ноя 2017
    Сообщения:
    3
    Симпатии:
    0
    Спасибо за ответ - проблему решил. Вопрос закрыт.
     
  6. taras413

    taras413 Новичок

    С нами с:
    11 апр 2021
    Сообщения:
    1
    Симпатии:
    0