我有一个关联的数据数组,我有一个我希望从该数组中删除的键数组(同时保持原始顺序中的其余键 - 而不是这可能是一个约束)。
我正在寻找一个 一行 的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
答案 0 :(得分:101)
$out =
array_diff_key
($data,
array_flip
($bad_keys));
我所做的就是查看Array functions列表,直到找到我需要的那个(_diff_key
)。
答案 1 :(得分:17)
解决方案确实是the one provided by Niet the Dark Absol。我想为任何追求类似事物的人提供另一个类似的解决方案,但是这个使用白名单而不是黑名单:
$whitelist = array( 'good_key1', 'good_key2', ... );
$output = array_intersect_key( $data, array_flip( $whitelist ) );
这将保留$whitelist
数组中的键并删除其余部分。
答案 2 :(得分:0)
这是我为关联数组创建的黑名单功能。
' '.join([a for a in re.split(ur'([\p{Lu}][\p{Ll}]+)', ''.join(entity)) if a])