taras1978
@taras1978
почти программист

Как сделать уникальным массив массив ассоциированных массивов?

Перед записью в базу надо проверить массив ассоциированных массивов, на уникальность по одному из ключей, например NUMBER.
Кто то наверняка это уже делал. Поделитесь опытом.

1 => array:8 [
    "NUMBER" => "000883011HDUER"
    "NUMBER2" => "000883011HCUER"
    "WEIGHT" => "104900"
    "VPE" => "1800"
    "VIN" => "1"
    "NL" => "08"
    "TITLE" => "Sitz"
    "TEILEART" => ""
  ]


Использую такую запись $aa = array_unique($aa,SORT_REGULAR);
Но не уверен что правильно работает.
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
taras1978
@taras1978 Автор вопроса
почти программист
Есть два варианта, один работает но медленно:
Ссылка Как исключить повторяющиеся записи из массива?
function unique_multidim_array($array, $key) {
    $temp_array = array();
    $i = 0;
    $key_array = array();
   
    foreach($array as $val) {
        if (!in_array($val[$key], $key_array)) {
            $key_array[$i] = $val[$key];
            $temp_array[$i] = $val;
        }
        $i++;
    }
    return $temp_array;
}
$details = unique_multidim_array($details,'id');

При массиве 500к , он замирает на десятки минут и не отвечает.
И еще вариент нашел :
Cсылка: How to make a unique associative array?
Работает 6 секунд.
$comboUserPosts = array_values(array_column($comboUserPosts, null, 'link'));
echo var_export($comboUserPosts, true);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Flying
Например вот так:
count($array) === count(array_unique(array_column($array, 'NUMBER')));
Ответ написан
New_Horizons
@New_Horizons
Бред:
Если нужно удалить повторяющиеся, то можно загнать массив в коллекцию, а потом unique/uniqueStrict использовать.

Если просто проверить, то цикл, условие и in_array тебе в помощь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы