if(preg_match( "/4/", $strMaxcardid+$i)){ $cardCount ++ ; continue; } 想问一下,我想同时跳4,7该怎么写呢

解决方案 »

  1.   

    $strMaxcardid = 699; //上一个号码
    while(preg_match('/(4|7)+/', ++$strMaxcardid)) $strMaxcardid ++;
    echo $strMaxcardid; //800
      

  2.   

    preg_match( "/[47]/", $strMaxcardid+$i)
      

  3.   


    这个有问题,修改一下:
    $strMaxcardid = 699; //上一个号码
    $strMaxcardid ++;
    while(preg_match('/(4|7)+/', $strMaxcardid)) $strMaxcardid ++;
    echo $strMaxcardid; //800不过这个方法效率极低,比如生成上面这个800就要执行100次while循环,工号不会出现很大数字的情况下还可以用用。
      

  4.   

    //这样应该比较高效了,不需要用正则
    $strMaxcardid = 699;
    $ar = str_split(++$strMaxcardid);
    foreach($ar as $k => $v) {
    if ($v == 4 || $v == 7) {
    $ar[$k] ++;
    break;
    }
    }$strMaxcardid = join('', $ar);
    echo $strMaxcardid; //800