分享一個PHP函數,用來找出5個Array的交集
/** 數組碰撞,找出多個數組的重疊值 返回: 重整之後的Array,如下: $arr=Array( 0=>'', //5個數組重疊的部份 1=>'', //第1個數組去掉[0]的值后 2=>'', //第2個數組去掉[0]的值后 3=>'', //第3個數組去掉[0]的值后 4=>'', //第4個數組去掉[0]的值后 5=>'', //第5個數組去掉[0]的值后 ); 參數: 要重整的5個數組 /**/ Public Static Function JiaoJi( $arr1 , $arr2 , $arr3 , $arr4 , $arr5 ) { IF(! Is_array ( $arr1 ) Or ! Is_array ( $arr2 ) Or ! Is_array ( $arr3 ) Or ! Is_array ( $arr4 ) Or ! Is_array ( $arr5 )) { throw New Exception( 'Error:' . __LINE__ . ',參數錯誤!' );Die(); } $arr =Array(); //找出這5個數組中重複的部份,賦值給$arr[0] { //合併數組 $narr = Array_Merge ( $arr1 , $arr2 , $arr3 , $arr4 , $arr5 ); //降維 Foreach( $narr as $v ){ $v = Implode( '`' , $v ); //降维 $temp [] = $v ; }unSet( $narr ); //去重复 $unique_arr = Array_Unique ( $temp ); //取差集 $repeat_arr = Array_Diff_Assoc ( $temp , $unique_arr );unSet( $temp , $unique_arr ); //去重複 $repeat_arr = Array_Unique ( $repeat_arr ); //升維 Foreach( $repeat_arr as $k => $v ){ $v = Explode ( '`' , $v ); $v [ 'gid' ]= $v [0];unSet( $v [0]); $v [ 'cod' ]= $v [1];unSet( $v [1]); $v [ 'tid1' ]= $v [2];unSet( $v [2]); $v [ 'tid2' ]= $v [3];unSet( $v [3]); $v [ 'stime' ]= $v [4];unSet( $v [4]); $temp [] = $v ; } $arr [0]= $temp ; unSet( $temp , $repeat_arr ); } /** 去掉5個數組中包含$arr[0]的部份 array(5) { ["gid"]=>string(1) "2" ["cod"]=>string(4) "4002" ["tid1"]=>string(3) "184" ["tid2"]=>string(3) "199" ["stime"]=>string(19) "2013-07-25 02:19:00" } /**/ $max =Max( Count ( $arr1 ), Count ( $arr2 ), Count ( $arr3 ), Count ( $arr4 ), Count ( $arr5 )); Foreach( $arr [0] as $k => $v ) { For( $i =0; $i < $max ; $i ++) { //去掉arr1和$arr[0]的重複部份 IF(isSet( $arr1 [ $i ])) { IF( $arr1 [ $i ][ 'gid' ]== $v [ 'gid' ] And $arr1 [ $i ][ 'cod' ]== $v [ 'cod' ] And $arr1 [ $i ][ 'tid1' ]== $v [ 'tid1' ] And $arr1 [ $i ][ 'tid2' ]== $v [ 'tid2' ] And $arr1 [ $i ][ 'stime' ]== $v [ 'stime' ]) { unSet( $arr1 [ $i ]); } } //去掉arr2和$arr[0]的重複部份 IF(isSet( $arr2 [ $i ])) { IF( $arr2 [ $i ][ 'gid' ]== $v [ 'gid' ] And $arr2 [ $i ][ 'cod' ]== $v [ 'cod' ] And $arr2 [ $i ][ 'tid1' ]== $v [ 'tid1' ] And $arr2 [ $i ][ 'tid2' ]== $v [ 'tid2' ] And $arr2 [ $i ][ 'stime' ]== $v [ 'stime' ]) { unSet( $arr2 [ $i ]); } } //去掉arr3和$arr[0]的重複部份 IF(isSet( $arr3 [ $i ])) { IF( $arr3 [ $i ][ 'gid' ]== $v [ 'gid' ] And $arr3 [ $i ][ 'cod' ]== $v [ 'cod' ] And $arr3 [ $i ][ 'tid1' ]== $v [ 'tid1' ] And $arr3 [ $i ][ 'tid2' ]== $v [ 'tid2' ] And $arr3 [ $i ][ 'stime' ]== $v [ 'stime' ]) { unSet( $arr3 [ $i ]); } } //去掉arr4和$arr[0]的重複部份 IF(isSet( $arr4 [ $i ])) { IF( $arr4 [ $i ][ 'gid' ]== $v [ 'gid' ] And $arr4 [ $i ][ 'cod' ]== $v [ 'cod' ] And $arr4 [ $i ][ 'tid1' ]== $v [ 'tid1' ] And $arr4 [ $i ][ 'tid2' ]== $v [ 'tid2' ] And $arr4 [ $i ][ 'stime' ]== $v [ 'stime' ]) { unSet( $arr4 [ $i ]); } } //去掉arr5和$arr[0]的重複部份 IF(isSet( $arr5 [ $i ])) { IF( $arr5 [ $i ][ 'gid' ]== $v [ 'gid' ] And $arr5 [ $i ][ 'cod' ]== $v [ 'cod' ] And $arr5 [ $i ][ 'tid1' ]== $v [ 'tid1' ] And $arr5 [ $i ][ 'tid2' ]== $v [ 'tid2' ] And $arr5 [ $i ][ 'stime' ]== $v [ 'stime' ]) { unSet( $arr5 [ $i ]); } } } }unSet( $max ); $arr [1]= $arr1 ;unSet( $arr1 ); $arr [2]= $arr2 ;unSet( $arr2 ); $arr [3]= $arr3 ;unSet( $arr3 ); $arr [4]= $arr4 ;unSet( $arr4 ); $arr [5]= $arr5 ;unSet( $arr5 ); Return $arr ; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述