【发布时间】:2011-09-27 14:00:15
【问题描述】:
我想合并两个数组:
$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 快得多。
【问题讨论】:
标签: php arrays filter array-merge array-key