如何在PHP中保留数组中的特定键?

如何在PHP中保留数组中的特定键?,php,arrays,intersection,hashset,Php,Arrays,Intersection,Hashset,我有一个关联数组 $preans[$id]... 其中包含大量数据,与$id相关 我还有另一个数组,它有 $affected_feature_ids[$id] = TRUE; 现在我想在$preans中只保留那些存在于$impacted\u feature\u id中的索引 如何做到这一点?快速而不雅观的工作解决方案: $a = [] foreach($affected_feature_ids as $key => $value) { if ($value) $a[$key]

我有一个关联数组

$preans[$id]...
其中包含大量数据,与
$id
相关

我还有另一个数组,它有

$affected_feature_ids[$id] = TRUE;
现在我想在
$preans
中只保留那些存在于
$impacted\u feature\u id
中的索引


如何做到这一点?

快速而不雅观的工作解决方案:

$a = []
foreach($affected_feature_ids as $key => $value) {
    if ($value) $a[$key] = $preans[$key];
}
// Now $a has only the elements you wanted.
print_r($a); // <-- displays what you are asking for
与Mathei Mihai答案的区别在于,它将忽略
$impacted\u feature\u id
元素,其中
$id
为false或null。在你的情况下,它只会考虑<代码> $FractEdTrimeUsID[$ID] <代码> > <代码>真< /代码> /p> 现在,您可以搜索更优雅的解决方案

您可以简单地使用:

array\u intersect\u key()返回一个数组,该数组包含array1的所有条目,这些条目的键在所有参数中都存在


别再那么优雅了
$preans = array_intersect_key($preans, array_filter($affected_feature_ids));
$preans = array_intersect_key($preans, $affected_feature_ids);