如果我有两个具有相同数量的键值对的关联数组,是否有一种简化的方法来创建第三个数组,该数组给出两者中都存在的键值对。它必须是相同的键值对,而不仅仅是相同的键或相同的值(array_intersect 仅标识相同的键)。干杯
问问题
541 次
4 回答
3
$array3 = array_intersect_assoc($array1, $array2);
查看array_intersect_assoc的 PHP 手册,其中解释了:array_intersect_assoc() 返回一个数组,其中包含所有参数中存在的 array1 的所有值。请注意,与 array_intersect() 不同,比较中使用的键。
于 2013-07-18T19:51:55.360 回答
1
如果$a
并且$b
是您的数组,您可以获得第三个数组,$c
如下所示:
$c = array_intersect_assoc($a, $b);
我使用了原生的array_intersect_assoc函数;
于 2013-07-18T20:15:02.730 回答
0
我知道如何获取数组中的键和两个数组中的值,但不知道键和值的交集。然而,它并不复杂。假设你有数组 $a 和 $b 并且想要创建数组 $c:
$c = array();
foreach($a as $k=>$v) if($b[$k] == $v) $c[$k]=$v;
如果 $b[$k] 未设置,这将引发错误,但如果您愿意,可以忽略这些错误。
于 2013-07-18T19:54:15.223 回答
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 );
于 2013-07-18T19:58:33.407 回答