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

这篇文章主要介绍了php数组比较实现查找连续数的方法,实例分析了php数组查找及字符串操作的相关技巧,需要的朋友可以参考下。

本文实例讲述了php数组比较实现查找连续数的方法,分享给大家供大家参考,具体如下:

  1. $data = array();
  2. $data[]= array("01" ,"02", "18" , "29" , "31" , "32");
  3. $data[]= array("02" ,"09", "11" , "22" , "24" , "27");
  4. $data[]= array("07" ,"16", "26" , "27" , "29" , "31");
  5. $data[]=array("04", "05", "07", "10", "13", "25");
  6. $data[]=array("02", "04", "05", "08", "19", "22");
  7. $data[]=array("03", "04", "15", "25", "26", "30");
  8. $data[]=array("01", "03", "06", "12", "16", "32");
  9. $data[]=array("01", "05", "14", "17", "22");
  10. // 判断表格中3个以上的连续
  11. function checkAll($sourceArr2D) {
  12. $count = sizeof($sourceArr2D);
  13. for($i=0; $i<$count; $i++){
  14. check_h($sourceArr2D[$i], $i);//找寻水平方向
  15. if($i>0) {
  16. check_v($sourceArr2D, $i);// 找寻竖直方向
  17. check_l($sourceArr2D, $i);// 找寻/方向
  18. check_r($sourceArr2D, $i);// 找寻方向
  19. }
  20. }
  21. }
  22. // 判断水平方向
  23. $h = array();// 保存水平方向上的搜寻结果
  24. function check_h($arr, $rownum) {
  25. //sort($arr, SORT_NUMERIC);
  26. global $h;
  27. $flag = false;
  28. for($i=2; $i<6; $i++){
  29. if( $arr[$i-2]==$arr[$i]-2 ){
  30. // 因为数组内数字不重复且有序故可取巧
  31. if(!$flag) {
  32. $h[$rownum] = array($arr[$i-2], $arr[$i-1], $arr[$i]);
  33. $flag = true;
  34. }else{
  35. array_push($h[$rownum], $arr[$i]);
  36. }
  37. }
  38. }
  39. }
  40. // 判断竖直方向
  41. $v = array();// 保存竖直方向上的搜寻结果
  42. function check_v($sourceArr2D, $rownum) {
  43. global $v;
  44. for($i=0; $i<6; $i++){
  45. $val = $sourceArr2D[$rownum][$i];
  46. if( in_array($rownum...$val, $v) ){
  47. continue;
  48. }
  49. if( in_array($val,$sourceArr2D[$rownum-1]) && in_array($val,$sourceArr2D[$rownum+1]) ){
  50. array_push($v, ($rownum-1)...$val, $rownum...$val, ($rownum+1)...$val);
  51. $tmp = $rownum + 2;
  52. while( ($tmp < sizeof($sourceArr2D)) && in_array($val, $sourceArr2D[$tmp]) ){
  53. array_push($v, $tmp...$val);
  54. $tmp++;
  55. }
  56. }
  57. }
  58. }
  59. // 判断/方向
  60. $l = array();// 保存/方向上的搜寻结果
  61. function check_l() {
  62. }
  63. // 判断方向
  64. $r = array();// 保存方向上的搜寻结果
  65. function check_r() {
  66. }
  67. // 结束定义,开始应用
  68. checkAll($data);
  69. echo
  70. //水平方向上的找寻:
  71. print_r($h);
  72. echo
  73. //竖直方向上的找寻:
  74. print_r($v);
  75. echo
  76. //方向上的找寻:
  77. print_r($l);
  78. echo
  79. //方向上的找寻:
  80. print_r($r);

希望本文所述对大家的php程序设计有所帮助。