кодовые последовательности с цифрой и буквой без 0,1, o & i - PullRequest
0 голосов
/ 04 сентября 2018

мне нужно сделать кодовые последовательности

Например. Начните с A5B, следующий код будет A5C, A5D ... До A59, затем следующий A6A, A6B ... A99, затем следующий BAA, BAB, BAC

последовательность A-Z, затем непрерывная с 2-9

$x = $last; // Get Last Value From DB
$a = substr($x,0,1); // Get First String
$b = substr($x,1,1); // Get Middle String
$c = substr($x, -1); // Get Last String
if($c == 'Z'){
$x = $a.$b.'0';
}
elseif($c == '9'){
if ($b == 'Z'){
$x = $a.'0'.'A';
}
elseif($b == '9'){
$a++;
$x = $a.'A'.'A';
}
else{
$b++;
$x = $a.$b.'A';
}
}
else{
$x++;
}

это работает, но проблема в том, как сделать кодовые последовательности без использования 0,1, o & i

помогите пожалуйста извините за мой английский

1 Ответ

0 голосов
/ 04 сентября 2018

Если вы не беспокоитесь о производительности, простое решение состоит в том, чтобы просто использовать цикл do-while, чтобы продолжать итерацию до тех пор, пока $x больше не будет содержать ни одного из нежелательных символов:

$x = $last; // Get Last Value From DB
do {
    $a = substr($x, 0, 1); // Get First String
    $b = substr($x, 1, 1); // Get Middle String
    $c = substr($x, -1); // Get Last String
    if ($c == 'Z') {
        $x = $a.$b.'0';
    } elseif ($c == '9') {
        if ($b == 'Z') {
            $x = $a.'0'.'A';
        } elseif ($b == '9') {
            $a++;
            $x = $a.'A'.'A';
        } else {
            $b++;
            $x = $a.$b.'A';
        }
    } else {
        $x++;
    }
} while (preg_match('/[01OI]/', $x));
...