Как объединить два массива, взяв только значения из второго массива, который имеет те же ключи, что и первый?

Я бы хотел объединить два массива друг с другом:

$filtered = array(1 => 'a', 3 => 'c');
$changed = array(2 => 'b*', 3 => 'c*');

Принимая во внимание, что слияние должно включать все элементы $ filter и все эти элементы $ changed , имеющие соответствующий ключ в $ filter :

$merged = array(1 => 'a', 3 => 'c*');

array_merge ($ filter, $ changed) добавят дополнительные ключи $ changed в $ также отфильтровано . Так что это не совсем подходит.

Я знаю, что могу использовать $ keys = array_intersect_key ($ filter, $ changed) , чтобы получить ключи, которые существуют в обоих массивах, что уже составляет половину работы.

Однако мне интересно, существует ли какая-нибудь (собственная) функция, которая может уменьшить массив $ changed в массив с $ keys , заданными array_intersect_key ? Я знаю, что могу использовать array_filter с функцией обратного вызова и проверять там $ keys , но, вероятно, есть какая-то другая чисто собственная функция для извлечения только тех элементов из массива, из которых ключи можно указать?

Я спрашиваю, потому что собственные функции часто намного быстрее, чем array_filter с обратным вызовом.

8
задан CharlesB 5 May 2012 в 00:17
поделиться