如果我有两个具有相同数量的键值对的关联数组,是否有一种简化的方法来创建第三个数组,该数组提供两者中存在的键值对。它必须是相同的键值对,而不仅仅是相同的键或相同的值(array_intersect仅标识相同的键)。欢呼声
答案 0 :(得分:3)
$array3 = array_intersect_assoc($array1, $array2);
查看array_intersect_assoc的PHP手册,其中解释了:array_intersect_assoc()返回一个数组,其中包含所有参数中存在的array1的所有值。请注意,与array_intersect()不同,这些键用于比较。
答案 1 :(得分:1)
答案 2 :(得分:0)
我知道如何在两个数组中的数组和值中获取键,但不知道键和值的交集。但是,它并不复杂。假设您有数组$ a和$ b并且想要生成数组$ c:
$c = array();
foreach($a as $k=>$v) if($b[$k] == $v) $c[$k]=$v;
如果未设置$ b [$ k],则会抛出错误,但如果您愿意,可以忽略它们。
答案 3 :(得分:0)
我会合并两个数组然后删除重复项以简化
合并两个数组:
function merge_common_keys(){
$arr = func_get_args();
$num = func_num_args();
$keys = array();
$i = 0;
for($i=0;$i<$num;++$i){
$keys = array_merge($keys, array_keys($arr[$i]));
}
$keys = array_unique($keys);
$merged = array();
foreach($keys as $key){
$merged[$key] = array();
for($i=0;$i<$num;++$i){
$merged[$key][] = isset($arr[$i][$key])?$arr[$i][$key]:null;
}
}
return $merged;
}
合并然后删除重复项
$merged = merge_common_keys($array1,$array2);
$unique = array_unique($merged );