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

2022-08-30 10:00:51

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

我正在寻找一个一行的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

答案 1

$out =array_diff_keyarray_flip($data,($bad_keys));

我所做的就是查看数组函数列表,直到找到我需要的函数()。_diff_key


答案 2

解决方案确实是黑暗赦免者Niet提供的解决方案。我想为任何追求类似事情的人提供另一种类似的解决方案,但是这个解决方案使用白名单而不是黑名单

$whitelist = array( 'good_key1', 'good_key2', ... );
$output = array_intersect_key( $data, array_flip( $whitelist ) );

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