<?php
//$a为10位随机值
//只统计连续的两位数以上
$a=7641235123; //ABC**ABC类型
echo '想要得到123';
echo '出现了2次';$a=76401235123; //ABCD类型
echo '想要得到0123';
echo '出现了1次';$a=7642351236; //ABC类型
echo '想要得到123';
echo '出现了1次';$a=4567545679; //ABCD**ABCD类型
echo '想要得到4567';
echo '出现了2次';$a=0123012389; //ABCDABCD类型
echo '想要得到0123';
echo '出现了2次';//连续的数值应该只有以下可能,如果用选循环数组方对比,效率很低吧
$arr=array();
$arr[]='01';
$arr[]='012';
$arr[]='0123';
$arr[]='01234';
$arr[]='012345';
$arr[]='0123456';
$arr[]='01234567';
$arr[]='012345678';
$arr[]='0123456789';$arr[]='12';
$arr[]='123';
$arr[]='1234';
$arr[]='12345';
$arr[]='123456';
$arr[]='1234567';
$arr[]='12345678';
$arr[]='123456789';
$arr[]='1234567890';$arr[]='23';
$arr[]='234';
$arr[]='2345';
$arr[]='23456';
$arr[]='234567';
$arr[]='2345678';
$arr[]='23456789';
$arr[]='234567890';$arr[]='34';
$arr[]='345';
$arr[]='3456';
$arr[]='34567';
$arr[]='345678';
$arr[]='3456789';
$arr[]='34567890';$arr[]='45';
$arr[]='456';
$arr[]='4567';
$arr[]='45678';
$arr[]='456789';
$arr[]='4567890';$arr[]='56';
$arr[]='567';
$arr[]='5678';
$arr[]='56789';
$arr[]='567890';$arr[]='67';
$arr[]='678';
$arr[]='6789';
$arr[]='67890';$arr[]='78';
$arr[]='789';
$arr[]='7890';$arr[]='89';
$arr[]='890';$arr[]='90';
?>

解决方案 »

  1.   

    用堆栈的方法的,一次pop()或shift()一个首/尾字符
      

  2.   

    可考虑在此基础上修改
    $a = array(
    '7641235123',
    '76401235123',
    '7642351236',
    '4567545679',
    '0123012389',
    );
    foreach($a as $i=>$v) {
      echo "$v : ";
      if(preg_match_all('/(.{2,}).*(\\1)/', $v, $r)) {
        $t = $r[1][0];
        if($t{0}+strlen($t)-1 == substr($t, -1))
          echo $r[1][0] . ' ' . (count($r)-1);
      }
      echo PHP_EOL;
    }
    7641235123 : 123 2
    76401235123 : 123 2
    7642351236 : 23 2
    4567545679 : 4567 2
    0123012389 : 0123 2
      

  3.   

    $a=76401235123; //ABCD类型
    echo '想要得到0123';
    echo '出现了1次';这个要取0123 怎么取
      

  4.   


    $a=76401235123; //ABCD类型
    echo '想要得到0123';
    echo '出现了1次';
    这个要取0123 怎么取
      

  5.   

    这个思路简单点,效率可能没有唠叨的高
    我的机器没有装php,随手写的,自己测试一下有没有错误<?php
    $a = 7641235123;
    $arr = preg_split('//', (string)$a, -1);
    $b=array();
    $i=0;
    foreach($arr as $k=>$v){
    if ($v == $arr[$k-1]+1){
    if ($arr[$k-1] != $arr[$k-2]+1) $b[$i][]=$arr[$k-1];
    $b[$i][]=$v;
    }else $i++;
    }
    //没搞错的话$b里面“key-1”是第几个字符开始连续,有需要可以在下面继续保留使用,这里忽略掉了
    foreach($b as $k=>$v) $c[]=implode('',$v);
    $d=array_count_values($c);
    var_export($d);
    ?>