在PHP中从数组中删除黑名单键

hac*_*ist 37 php arrays key

我有一个关联的数据数组,我有一个我想从该数组中删除的键数组(同时保持原始顺序中的其余键 - 不是这可能是一个约束).

我要寻找一个一个衬垫的PHP的做到这一点.
我已经知道如何我可以遍历数组,但它似乎应该有一些array_mapunsetarray_filter解决方案外面我的把握.

我搜索了一下,但没有发现任何简洁.

要清楚这是一行中的问题:

//have this example associative array of data
$data = array(
    'blue'   => 43,
    'red'    => 87,
    'purple' => 130,
    'green'  => 12,
    'yellow' => 31
);

//and this array of keys to remove
$bad_keys = array(
    'purple',
    'yellow'
);

//some one liner here and then $data will only have the keys blue, red, green
Run Code Online (Sandbox Code Playgroud)

Nie*_*sol 103

$out =array_diff_key($data,array_flip($bad_keys));

我所做的只是查看数组函数列表,直到找到我需要的那个(_diff_key).

  • 好吧,array_flip技巧是我不知道的.谢谢! (2认同)

Pmp*_*mpr 17

解决方案确实是由Niet the Dark Absol提供的解决方案.我想为类似的人提供另一个类似的解决方案,但是这个使用白名单而不是黑名单:

$whitelist = array( 'good_key1', 'good_key2', ... );
$output = array_intersect_key( $data, array_flip( $whitelist ) );
Run Code Online (Sandbox Code Playgroud)

这将保留$whitelist数组中的键并删除其余的键.