Задать вопрос
@nyatmeat15

Как объединить 2 массива?

Задался вопросом, как объединить огромные массивы.
array_merge не очень подходит, так как при добавлении сначала идет проверка на дубликаты
$arr1+$arr2 - Если индексы совпадают, то будет элемент из первого массива, что не совсем корректно
Бежать foreach как по мне еще медленнее чем array_merge
array_splice($arr1, count($arr1), 0, $arr2) - быстрее, но как по мне не идеальное решение.
Какие еще могут быть варианты объединения массивов с совпадающими индексами?
  • Вопрос задан
  • 510 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
Никаких. Потому что у вас по сути два подхода - неглядя все перенумеровать (splice) или проверить на дубликаты (merge). Можно конечно как вы верно заметили еще в цикле самому, но вряд ли ваша реализация окажется быстрее нативной.
Если и искать решение, то в другой плоскости - возможно не стоит объединять огромные массивы?
Например не допускать чтобы образовывалось два, а пихать данные заранее в один. Или работать раздельно с двумя.
Ответ написан
Комментировать
e20860
@e20860
Работал с СУБД, осваиваю WEB
Как-то Вы очень по-простому подходите к массивам. В PHP очень развёрнутая система манипулирования данными структурами.
Вот краткий перечень функций, с которыми можно поиграться (хоть на расхождении хоть на схождении):
array_udiff() — Вычисляет расхождение массивов, используя для сравнения callback-функцию
array_diff() - Вычислить расхождение массивов
array_diff_assoc() - Вычисляет расхождение массивов с дополнительной проверкой индекса
array_diff_uassoc() - Вычисляет расхождение массивов с дополнительной проверкой индекса, осуществляемой при помощи callback-функции
array_udiff_assoc() - Вычисляет расхождение в массивах с дополнительной проверкой индексов, используя для сравнения значений callback-функцию
array_udiff_uassoc() - Вычисляет расхождение в массивах с дополнительной проверкой индексов, используя для сравнения значений и индексов callback-функцию
array_intersect() - Вычисляет схождение массивов
array_intersect_assoc() - Вычисляет схождение массивов с дополнительной проверкой индекса
array_uintersect() - Вычисляет пересечение массивов, используя для сравнения значений callback-функцию
array_uintersect_assoc() - Вычисляет пересечение массивов с дополнительной проверкой индексов, используя для сравнения значений callback-функцию
array_uintersect_uassoc() - Вычисляет пересечение массивов с дополнительной проверкой индекса, используя для сравнения индексов и значений индивидуальные callback-функции.
Ссылка на документацию
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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