PHP从数组中删除除x之外的所有内容

Tim*_*Tim 1 php arrays

有没有一种明智的方法可以从我指定的数组APART中删除所有字段?

我正在考虑array_diff可行的方法,但我只想列出我想要允许的字段键,然后说'放弃其他所有'.这样做的最佳方法是什么?

非常感谢

Ple*_*and 6

如果复制数组没问题,array_intersect_key()应该可以工作.

$arr = array(
    'A' => 'alpha',
    'B' => 'bravo',
    'C' => 'charlie',
    'D' => 'delta'
);

$allowedKeys = array('B', 'C');

print_r(array_intersect_key($arr, array_flip($allowedKeys)));

# Array
# (
#    [B] => bravo
#    [C] => charlie
# )
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用foreach循环:

foreach ($arr as $key => $value) {
    if (!in_array($key, $allowedKeys)) {
        unset($arr[$key]);
    }
}
Run Code Online (Sandbox Code Playgroud)