我有两个数组:
$arr1 = array('a' => 10, 'b' => 20);
$arr2 = array('a' => 10, 'b' => 20, 'c' => 30);
如何使用array_filter删除$arr2不存在的元素$arr1?就像我的例子中的"c"一样......
有一个专门为此目的而制作的函数:array_intersect():
array_intersect - 计算数组的交集
$arr2 = array_intersect($arr1, $arr2);
Run Code Online (Sandbox Code Playgroud)
如果要比较键而不是像array_intersect()这样的值,请使用array_intersect_key():
array_intersect_key - 使用键进行比较来计算数组的交集
$arr2 = array_intersect_key($arr1, $arr2);
Run Code Online (Sandbox Code Playgroud)
如果要比较key=>value对,请使用array_intersect_assoc():
array_intersect_assoc - 使用附加索引检查计算数组的交集
$arr2 = array_intersect_assoc($arr1, $arr2);
Run Code Online (Sandbox Code Playgroud)
在array_filter回调中使用in_array:
$arr2 = array_filter($arr2, function($e) use ($arr1) {
return in_array($e, $arr1);
});
Run Code Online (Sandbox Code Playgroud)
请注意,这将考虑元素的值,而不是键。array_filter不会为您提供任何可用的键,因此如果您需要这样做,则常规的foreach循环可能更适合。
| 归档时间: |
|
| 查看次数: |
4220 次 |
| 最近记录: |