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