Я хочу объединить два массива друг с другом:
$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
с обратным вызовом.