请教PHP高手,
有一个三维数组,是动态加载的三维数组。所以三维数组有N个二维数组中的N是动态的,不是固定的。
现在要求是把这个三维数组里N个二维数组取出来取交集$result_arr = array_intersect_assoc($arr_sourse[0],$arr_sourse[1],.......$arr_sourse[N-1]);请教高手,这个函数如何去实现
就是省略号那里的问题,如果三维数组里有5个二维数组。那么array_intersect_assoc()这个函数里的参数就有5个。
同样的道理,如果有7个,array_intersect_assoc函数的参数就有7个。

解决方案 »

  1.   

    是不是要合拼数组?~
    如果是,就直接新开一个数组~
    直接用foreach语句吧,2维数组加载进去!
      

  2.   

    $arr//这个是三维数组$subarr = implode(',',$arr);//把每个二维数组用逗号连接起来。$result_arr = array_intersect_assoc($subarr);
      

  3.   

    1、array_intersect_assoc 的参数是若干个一维数组。而你却要给他若干个二维数组,这样能得到正确的结果吗?2、假设传递的参数是合法的。那么你只需用 call_user_func_array 来执行 array_intersect_assoc 就可以了
    $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
    $array2 = array("a" => "green", "yellow", "red");
    //$result_array = array_intersect_assoc($array1, $array2);
    $result_array = call_user_func_array ('array_intersect_assoc', array($array1, $array2));
    print_r($result_array);
      

  4.   

    楼上的高手,还有个问题
    就是我要比较的二维数组是动态加载的,不一定是只比较2个的。有可能3个甚至更多。这个如何搞?如何实现动态的把N个二维数组放在call_user_func_array里面去比较呢?
      

  5.   

    $arr = array(array(array('text'=>'gaowaineng','value'=>'1'),array('text'=>'xiao','value'=>'2')),array(array('text'=>'libo','value'=>'2'),array('text'=>'xiao','value'=>'2')),array(array('text'=>'wangsongfeng','value'=>'3'),array('text'=>'xiao','value'=>'2')));
    $arr_temp = $arr;$bijiao = array();
    $count = count($arr_temp);foreach($arr_temp[0] as &$value){
    $lishi = array();
    $total = count($value);
    for($i=1;$i<$count;$i++){
    if(!empty($arr_temp[$i])){
    $sum = count($arr_temp[$i]);
    $temp = array();
    for($j=0;$j<$sum;$j++){
    if(!empty($lishi[$i-1]))
    $temp = array_intersect_assoc($lishi[$i-1],$arr_temp[$i][$j]);
    else
    $temp = array_intersect_assoc($value,$arr_temp[$i][$j]);
    if(!empty($temp) && $total==count($temp)){
    $lishi[$i]=$temp;
    break;
    }
    }
    }
    }
    if(!empty($lishi)&&count($lishi)==$count-1){
    $bijiao = $lishi[count($lishi)-1];
    }
    }
    print_R($bijiao);
    不知道对不对 代码很复杂......但是还是可以简化.....我只是出个思路!
      

  6.   

    $arr3 = array('');$arr3 = array(
    array("a" => "green", "b" => "brown", "c" => "blue", "red"),
    array("a" => "green", "brown", "blue", "red"),
    array("a" => "green", "c" => "blue", "red"),
    array("a" => "green", "b" => "brown", "c" => "blue"),
    );$result_array = array_shift($arr3);
    foreach($arr3 as $arr2) {
    $result_array = call_user_func_array('array_intersect_assoc', array($result_array, $arr2));
    }
      

  7.   

    $arr = array(
        array(array('text'=>'gaowaineng',
                     'value'=>'1'
                     ),
               array('text'=>'xiao',
                     'value'=>'2')
                     ),
               array(array('text'=>'libo',
                           'value'=>'2'
                           ),
                     array('text'=>'xiao',
                           'value'=>'2')
                           ),
                     array(array('text'=>'wangsongfeng',
                                 'value'=>'3'
                                 ),
                           array('text'=>'xiao',
                                 'value'=>'2'
                                 ) 
                           )
                 );测试数据
      

  8.   

    $arr = array(
    array(array('text'=>'zhan','value'=>'1'),array('text'=>'xiao','value'=>'2')),
    array(array('text'=>'lisi','value'=>'2'),array('text'=>'xiao','value'=>'2')),
    array(array('text'=>'wawu','value'=>'3'),array('text'=>'xiao','value'=>'2'))
    );array('text'=>'xiao','value'=>'2')  估计楼主说的这个是交集吧......