php 數組比較,尋找連續數執行個體

來源:互聯網
上載者:User

$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", www.111cn.net, "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 '<br /><br />水平方向上的找尋:';
print_r($h);
echo '<br /><br />豎直方向上的找尋:';
print_r($v);
echo '<br /><br />/方向上的找尋:';
print_r($l);
echo '<br /><br />方向上的找尋:';
print_r($r);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.