有这样的一个数组 计算出他的交集和并集
每个数组内的相同 的值 
这个数组中中 我也不确定 有几个数组 上面 是其中的一部分

解决方案 »

  1.   

    foreach + if 一个一个筛选
      

  2.   

    因为例子只是二维,但没说明有没有更深的维度
    主要不明白你是否要深达最内层的值,整个数组不论维度,出现两次就算“交”,否则算“差”?递归把数组变成一维,用array_count_values,计数器为1的就是“差”,计数器>1的就是“交”
      

  3.   

    $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
    (
    )不知道你想干什么
      

  4.   


    $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) 
     
      

  5.   


    上面的数组 有点小错误 
    $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),
    );效果一样的
      

  6.   

    $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) 
      

  7.   

    你总的让人知道你是想干什么吧?$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
    )但这并不符合集合运算规则
      

  8.   


    大致跟我前面说的思路一致
    <?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);
    ?>