本文实例讲述了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程序设计有所帮助。