php数组比较实现查找连续数的方法

yipeiwu_com6年前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个以上的连续 
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程序设计有所帮助。

相关文章

php代码检查代理ip的有效性

本文实例为大家分享了检查代理ip有效性php代码,稳定性,如错误率和查询用时 /** +---------------------------------------------...

浅谈PHP定义命令空间的几个注意点(推荐)

1.声明命令空间必须是程序脚本的第一条语句。另外,所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。 下面是错误的示例: <html> <?ph...

php中导出数据到excel时数字变为科学计数的解决方法

在数据导出到excel时数字格式不对,一般分为以下两种情况。 1、excel单元格设置长度不够 解决方法: 复制代码 代码如下: //在excel.php文件中 $objActSheet...

PHP下通过系统信号量加锁方式获取递增序列ID

在网上搜了搜,有两个办法但都不太好:一个是简单的以进程ID+时间戳,或进程ID+随机数来产生近似的唯一ID,虽简单但对于追求“完美”的我不愿这样凑合,再说Apache2以后进程会维持相当...

php smarty模版引擎中的缓存应用

1,Smarty缓存的配置: 复制代码 代码如下:$smarty->cache-dir="目录名"; //创建缓存目录名 $smarty->caching=true; //开...