本文实例讲述了php数组比较实现查找连续数的方法。分享给大家供大家参考。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
$data = array (); $data []= array ( "01" , "02" , "18" , "29" , "31" , "32" ); $data []= array ( "02" , "09" , "11" , "22" , "24" , "27" ); $data []= array ( "07" , "16" , "26" , "27" , "29" , "31" ); $data []= array ( "04" , "05" , "07" , "10" , "13" , "25" ); $data []= array ( "02" , "04" , "05" , "08" , "19" , "22" ); $data []= array ( "03" , "04" , "15" , "25" , "26" , "30" ); $data []= array ( "01" , "03" , "06" , "12" , "16" , "32" ); $data []= array ( "01" , "05" , "14" , "17" , "22" ); // 判断表格中3个以上的连续 function checkAll( $sourceArr2D ) { $count = sizeof( $sourceArr2D ); for ( $i =0; $i < $count ; $i ++){ check_h( $sourceArr2D [ $i ], $i ); //找寻水平方向 if ( $i >0) { check_v( $sourceArr2D , $i ); // 找寻竖直方向 check_l( $sourceArr2D , $i ); // 找寻/方向 check_r( $sourceArr2D , $i ); // 找寻方向 } } } // 判断水平方向 $h = array (); // 保存水平方向上的搜寻结果 function check_h( $arr , $rownum ) { //sort($arr, SORT_NUMERIC); global $h ; $flag = false; for ( $i =2; $i <6; $i ++){ if ( $arr [ $i -2]== $arr [ $i ]-2 ){ // 因为数组内数字不重复且有序故可取巧 if (! $flag ) { $h [ $rownum ] = array ( $arr [ $i -2], $arr [ $i -1], $arr [ $i ]); $flag = true; } else { array_push ( $h [ $rownum ], $arr [ $i ]); } } } } // 判断竖直方向 $v = array (); // 保存竖直方向上的搜寻结果 function check_v( $sourceArr2D , $rownum ) { global $v ; for ( $i =0; $i <6; $i ++){ $val = $sourceArr2D [ $rownum ][ $i ]; if ( in_array( $rownum ... $val , $v ) ){ continue ; } if ( in_array( $val , $sourceArr2D [ $rownum -1]) && in_array( $val , $sourceArr2D [ $rownum +1]) ){ array_push ( $v , ( $rownum -1)... $val , $rownum ... $val , ( $rownum +1)... $val ); $tmp = $rownum + 2; while ( ( $tmp < sizeof( $sourceArr2D )) && in_array( $val , $sourceArr2D [ $tmp ]) ){ array_push ( $v , $tmp ... $val ); $tmp ++; } } } } // 判断/方向 $l = array (); // 保存/方向上的搜寻结果 function check_l() { } // 判断方向 $r = array (); // 保存方向上的搜寻结果 function check_r() { } // 结束定义,开始应用 checkAll( $data ); echo //水平方向上的找寻: print_r( $h ); echo //竖直方向上的找寻: print_r( $v ); echo //方向上的找寻: print_r( $l ); echo //方向上的找寻: print_r( $r ); |
希望本文所述对大家的php程序设计有所帮助。