You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

哪个PHP函数可筛选关联数组仅保留键存在于另一数组值中的元素?

匹配关联数组键与索引数组值的PHP实现

需求:我需要类似array_intersect_key()的PHP处理逻辑,现有关联数组$populations和索引数组$countries,要返回$populations的子集,仅保留那些键存在于$countries数组的值中的元素。

示例输入数组:

$populations = [
    'Sweden' => 6476727,
    'Denmark' => 3722898,
    'Finland' => 3417691,
    'Norway' => 3511912,
    'Iceland' => 247524
];

$countries = [
    'Sweden',
    'Denmark',
    'Norway'
];

期望输出:

[
    'Sweden' => 6476727,
    'Denmark' => 3722898,
    'Norway' => 3511912
]

两种可行实现方式

  • 方法一:使用array_filter()
    借助array_filter()的ARRAY_FILTER_USE_KEY参数,以数组键作为判断依据:

    $result = array_filter($populations, function($key) use ($countries) {
        return in_array($key, $countries);
    }, ARRAY_FILTER_USE_KEY);
    
  • 方法二:结合array_flip()与array_intersect_key()(更高效)
    先将索引数组$countries转为键值相同的关联数组,再用array_intersect_key()直接匹配键:

    $countryKeys = array_flip($countries);
    $result = array_intersect_key($populations, $countryKeys);
    

    这种方式效率更高,因为array_intersect_key()底层依赖的array_key_exists查询速度远快于in_array()。

内容的提问来源于stack exchange,提问作者Electric-Gecko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:35:12