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

时间:2013-01-04 10:29:35

标签: php arrays

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

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

非常感谢

2 个答案:

答案 0 :(得分: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
# )

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

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

答案 1 :(得分:0)

尝试以下代码..这可能对您有用

foreach($array as $key=>&$value) {
        if($key!='yourx') {
            unset($array[$key])
        }
    }