если вы хотите, чтобы второй массив ($ b) был шаблоном, который указывает, что если там есть только ключ, то вы также можете попробовать это
ел бы объединить два массива друг с другом:
$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
с обратным вызовом.