我有一个关联的数据数组,我有一个我想从该数组中删除的键数组(同时保持原始顺序中的其余键 - 不是这可能是一个约束).
我要寻找一个一个衬垫的PHP的做到这一点.
我已经知道如何我可以遍历数组,但它似乎应该有一些array_map用unset或array_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).
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数组中的键并删除其余的键.