请教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个。
有一个三维数组,是动态加载的三维数组。所以三维数组有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个。
如果是,就直接新开一个数组~
直接用foreach语句吧,2维数组加载进去!
$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);
就是我要比较的二维数组是动态加载的,不一定是只比较2个的。有可能3个甚至更多。这个如何搞?如何实现动态的把N个二维数组放在call_user_func_array里面去比较呢?
$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);
不知道对不对 代码很复杂......但是还是可以简化.....我只是出个思路!
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));
}
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'
)
)
);测试数据
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') 估计楼主说的这个是交集吧......