Я хотел бы объединить два массива друг с другом:
$filtered = array(1 => 'a', 3 => 'c');
$changed = array(2 => 'b*', 3 => 'c*');
Принимая во внимание, что объединение должно включать все элементы $filtered
и все те элементы $changed
, которые имеют соответствующий ключ в $filtered
:
$merged = array(1 => 'a', 3 => 'c*');
array_merge($filtered, $changed)
также добавит дополнительные ключи $changed
в $filtered
.Так что это на самом деле не подходит.
Я знаю, что могу использовать $keys = array_intersect_key($filtered, $changed)
, чтобы получить ключи, существующие в обоих массивах, что уже составляет половину работы.
Однако мне интересноесли есть какая-либо (нативная) функция, которая может преобразовать массив $changed
в массив с $keys
, заданным array_intersect_key
?Я знаю, что могу использовать array_filter
с функцией обратного вызова и проверять $keys
в нем, но, вероятно, есть какая-то другая чисто нативная функция для извлечения только тех элементов из массива, ключи которого могут быть указаны?
Я спрашиваю, потому что родные функции часто намного быстрее, чем array_filter
с обратным вызовом.