php数组比较实现查找连续数的方法
本文实例讲述了php数组比较实现查找连续数的方法。分享给大家供大家参考。具体如下:
$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个以上的连续
functioncheckAll($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();//保存水平方向上的搜寻结果
functioncheck_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();//保存竖直方向上的搜寻结果
functioncheck_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();//保存/方向上的搜寻结果
functioncheck_l(){
}
//判断方向
$r=array();//保存方向上的搜寻结果
functioncheck_r(){
}
//结束定义,开始应用
checkAll($data);
echo
//水平方向上的找寻:
print_r($h);
echo
//竖直方向上的找寻:
print_r($v);
echo
//方向上的找寻:
print_r($l);
echo
//方向上的找寻:
print_r($r);
希望本文所述对大家的php程序设计有所帮助。