我有一个如下所示的数组:
$arr = [
0 => "A",
1 => "B",
2 => "C",
3 => "D",
4 => "E",
];
我想删除一些项目,我有他们的密钥数组:
$delKeys = [0,2,3];
以下过程显示了我想要实现的目标:
foreach ($delKeys as $dk) {
unset($arr[$dk]);
}
我离开了:
array(
[1] => "B",
[4] => "E",
)
是否有一个构建方法可以执行上述3-liner,如array_filter
,但保留原始数组的键?
答案 0 :(得分:7)
两个函数,但至少有一行 - array_diff_key()
以及array_flip()
:
array_diff_key($arr, array_flip($delKeys))
Array
(
[1] => B
[4] => E
)
答案 1 :(得分:0)
array_diff_key($arr, array_flip($delKeys))
array_flip函数会将值翻转到键中,而不是array_diff_key找到两个数组之间的差异
答案 2 :(得分:-3)
您可以随时为此任务定义自己的功能:
/**
* Remove the specified keys from a given array.
*
* @param array $array
* @param array $keys
* @return array
*/
function array_forget(array $array, array $keys)
{
foreach ($keys as $key)
{
unset($array[$key]);
}
return $array;
}
用法:
$arr = array_forget($arr, [0,2,3]);