本文实例讲述了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","31");
$data[]=array("04","05","07","10","13","25");
$data[]=array("02","04","08","19","22");
$data[]=array("03","15","25","30");
$data[]=array("01","03","06","12","32");
$data[]=array("01","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程序设计有所帮助。
原文链接:https://www.f2er.com/php/21400.html