php数组 问题 有这样的一个数组 计算出他的交集和并集每个数组内的相同 的值 这个数组中中 我也不确定 有几个数组 上面 是其中的一部分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 foreach + if 一个一个筛选 因为例子只是二维,但没说明有没有更深的维度主要不明白你是否要深达最内层的值,整个数组不论维度,出现两次就算“交”,否则算“差”?递归把数组变成一维,用array_count_values,计数器为1的就是“差”,计数器>1的就是“交” $ar = array( '-1' => array( -1), '95' => array(95), '1,95' => array(1, 95), '96' => array(96),);print_r(call_user_func_array('array_diff', $ar));print_r(call_user_func_array('array_intersect', $ar));Array( [0] => -1)Array()不知道你想干什么 $ar = array( '1,2,95' => array(1,2,95), '1,2,95' => array(1,2,95), '1,2,96' => array(1,2,96), '1,2' => array(1,2),);我得到的是 并集 $all = array(1,2);他们的差集就就是 $unequal = array(95,96) 上面的数组 有点小错误 $ar = array( '1,2,95' => array(1,2,95), '1,2,97' => array(1,2,97), '1,2,96' => array(1,2,96), '1,2' => array(1,2),);效果一样的 $ar = array( '1,2,95' => array(1,2,95), '1,2,97' => array(1,2,97), '1,2,96' => array(1,2,96), '1,2' => array(1,2),);我得到的是 并集 $all = array(1,2);他们的差集就就是 $unequal = array(95,96,97) 你总的让人知道你是想干什么吧?$ar = array( '1,2,95' => array(1,2,95), '1,2,97' => array(1,2,97), '1,2,96' => array(1,2,96), '1,2' => array(1,2),);$t = array();foreach($ar as $v) { $t = array_merge(array_diff($v, $t), array_diff($t, $v));}print_r($t);Array( [0] => 96 [1] => 97 [2] => 95)但这并不符合集合运算规则 大致跟我前面说的思路一致<?php$ar = array( '1,2,95' => array(1,2,95), '1,2,97' => array(1,2,97), '1,2,96' => array(1,2,96), '1,2' => array(1,2),);$a=array();function comp($item){ global $a; $a[] = $item;}array_walk_recursive($ar, 'comp');$tmp=array_diff_assoc($a, array_unique($a));$b = array_values(array_diff($a, $tmp)); // 差集95,96,97$c = array_values(array_unique($tmp)); // 交集1,2var_export($b);var_export($c);?> 那里可以申请免费的PHP空间 用来测试的 求助php正则 取值问题 晚上服务器被攻击的,请高手给看看我的文件,什么问题 房产网的GG地图功能终于搞定,有需要的兄弟可以参考下 在线客服系统的原理 php 中文网页 转换 中文pdf 关于Laravel 4在ubuntu上的安装 超多IP访问/robots.txt 那么问题来了:pdf修改哪家强? PHP 5.6 微信上传永久素材报41005 php这有什么问题吗?奶奶地用不了!!! 请高手帮忙修改下正则代码,不能完全匹配
主要不明白你是否要深达最内层的值,整个数组不论维度,出现两次就算“交”,否则算“差”?递归把数组变成一维,用array_count_values,计数器为1的就是“差”,计数器>1的就是“交”
'-1' => array( -1),
'95' => array(95),
'1,95' => array(1, 95),
'96' => array(96),
);print_r(call_user_func_array('array_diff', $ar));
print_r(call_user_func_array('array_intersect', $ar));
Array
(
[0] => -1
)
Array
(
)不知道你想干什么
$ar = array(
'1,2,95' => array(1,2,95),
'1,2,95' => array(1,2,95),
'1,2,96' => array(1,2,96),
'1,2' => array(1,2),
);
我得到的是 并集 $all = array(1,2);
他们的差集就就是 $unequal = array(95,96)
上面的数组 有点小错误
$ar = array(
'1,2,95' => array(1,2,95),
'1,2,97' => array(1,2,97),
'1,2,96' => array(1,2,96),
'1,2' => array(1,2),
);效果一样的
'1,2,95' => array(1,2,95),
'1,2,97' => array(1,2,97),
'1,2,96' => array(1,2,96),
'1,2' => array(1,2),
);我得到的是 并集 $all = array(1,2);
他们的差集就就是 $unequal = array(95,96,97)
'1,2,95' => array(1,2,95),
'1,2,97' => array(1,2,97),
'1,2,96' => array(1,2,96),
'1,2' => array(1,2),
);
$t = array();
foreach($ar as $v) {
$t = array_merge(array_diff($v, $t), array_diff($t, $v));
}
print_r($t);Array
(
[0] => 96
[1] => 97
[2] => 95
)但这并不符合集合运算规则
大致跟我前面说的思路一致
<?php
$ar = array(
'1,2,95' => array(1,2,95),
'1,2,97' => array(1,2,97),
'1,2,96' => array(1,2,96),
'1,2' => array(1,2),
);
$a=array();
function comp($item)
{
global $a;
$a[] = $item;
}
array_walk_recursive($ar, 'comp');
$tmp=array_diff_assoc($a, array_unique($a));
$b = array_values(array_diff($a, $tmp)); // 差集95,96,97
$c = array_values(array_unique($tmp)); // 交集1,2
var_export($b);
var_export($c);
?>