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

5年以前  |  阅读数:215 次  |  编程语言: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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例