使用php在循环通过capitilisations时增加字母

我正在开展一个项目,我需要循环通过这样的字母:a,A,b,B ... z,Z,aa,Aa,aA,AA,bb ... zz,ZZ ... in PHP。 是否可以以可扩展的方式执行此操作?     
已邀请:
不确定这是你在找什么?
$low = $low2 = range('a', 'z');
$upp = $upp2 = range('A', 'Z');

$arr = array();
foreach ($low as $val)
{
  $arr[] = $val;
  foreach ($low2 as $lval)
  {
    $arr[] = $val.$lval;
  }
}

foreach ($upp as $val)
{
  $arr[] = $val;
  foreach ($upp2 as $uval)
  {
    $arr[] = $val.$uval;
  }
}

foreach ($low as $val)
{
  foreach ($upp as $uval)
  {
    $arr[] = $val.$uval;
  }
}

foreach ($upp as $val)
{
  foreach ($low as $lval)
  {
    $arr[] = $val.$lval;
  }
}
    
计算排列是一项非常繁重的任务。这将专门针对您计算包含所有大写和大写字母的集合的两个字符排列的情况(我没有测试过该函数,但您应该能够解决它正在修复的任何错误,它会让你开始至少)。
function permutations($items)
{
  empty($items)?return array():$perms = array();
  for ($i = count($items)-1; $i > 0; --$i)
  {
    $perms[] = $items[0].$items[$i];
  }
  return array_merge($perms, permutations(array_slice($items,1)));
}
    
$lowercase
$uppercase
是分别保存a-z和A-Z的ASCII值的数组。 根据需要修改。
<?php

    $lowercase = array(97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122);

    $uppercase = array(65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90);

    $i = 0;
    for($i; $i < 26; $i++) {
        echo chr($lowercase[$i]) . ", ";
        echo chr($uppercase[$i]) . ", ";
    }

    $i = 0;
    for($i; $i < 26; $i++) {
        echo chr($lowercase[$i]);
        echo chr($lowercase[$i]);
        echo ", ";
        echo chr($uppercase[$i]);
        echo chr($lowercase[$i]);
        echo ", ";
        echo chr($lowercase[$i]);
        echo chr($uppercase[$i]);
        echo ", ";
        echo chr($uppercase[$i]);
        echo chr($uppercase[$i]);
        echo ", ";
    }

?>
这是输出的样子:
a, A, b, B, c, C, d, D, e, E, f, F, g, G, h, H, i, I, j, J, k, K, l, L, m, M, n, N, o, O, p, P, q, Q, r, R, s, S, t, T, u, U, v, V, w, W, x, X, y, Y, z, Z, aa, Aa, aA, AA, bb, Bb, bB, BB, cc, Cc, cC, CC, dd, Dd, dD, DD, ee, Ee, eE, EE, ff, Ff, fF, FF, gg, Gg, gG, GG, hh, Hh, hH, HH, ii, Ii, iI, II, jj, Jj, jJ, JJ, kk, Kk, kK, KK, ll, Ll, lL, LL, mm, Mm, mM, MM, nn, Nn, nN, NN, oo, Oo, oO, OO, pp, Pp, pP, PP, qq, Qq, qQ, QQ, rr, Rr, rR, RR, ss, Ss, sS, SS, tt, Tt, tT, TT, uu, Uu, uU, UU, vv, Vv, vV, VV, ww, Ww, wW, WW, xx, Xx, xX, XX, yy, Yy, yY, YY, zz, Zz, zZ, ZZ,
    
这段代码写了一行,其中1个字符宽,1个宽2个字符,等等。 对于每个宽度,它通过迭代字母并从0到2 ^宽度计数并基于二进制位进行大写来打印所有排列。
e.g.
  00 = aa
  01 = aA
  10 = Aa
  11 = AA

(actually I have iterated bits from lowest to highest rank to get the order to match your example)
代码:
$maxwidth = 3;
for ( $width = 1; $width <= $maxwidth; $width++ ) {
    for ( $letter = ord('a'); $letter <= ord('z'); $letter++ ) {
        for ( $num = 0; $num < pow(2,$width); $num++ ) {
            for ( $bit = 0; $bit < $width; $bit++ ) {
                print ($num & pow(2, $bit)) ? strtoupper(chr($letter)) : chr($letter);  
            }
            print ','; 
        }
    }
    print "n";
}
输出: 一,A,B,B,C,C,d,d,E,E,F,F,G,G,H,H,I,I,J,J,K,K,L,L,M, M,N,N,O,O,p,p,q,q,R,R,S,S,T,T,U,U,v,v,W,W,X,X,Y,Y, Z Z, AA,AA,AA,AA,BB,BB,BB,BB,CC,抄送,CC,CC,DD,DD,DD,DD,EE,EE,EE,EE,FF,FF,FF,FF,GG, GG,GG,GG,HH,11H,11H,11H,II,II,II,II,JJ,JJ,JJ,JJ,KK,KK,KK,KK,LL,LL,LL,LL,MM,MM, MM,MM,NN,NN,NN,NN,OO,指路,OO,PP,PP,PP,PP,QQ,QQ,QQ,QQ,RR,RR,RR,RR,SS,SS,SS, SS,TT,TT,TT,TT,UU,UU,UU,UU,VV,VV,VV,VV,WW,WW,WW,WW,XX,XX,XX,XX,YY,YY,YY,YY, ZZ,ZZ,ZZ,ZZ, AAA,AAA,AAA,AAA,AAA,AAA,AAA,AAA,BBB,BBB,BBB,BBB,BBB,BBB,BBB,BBB,CCC,CCC,CCC,CCC,CCC,CCC,CCC,CCC,DDD,国内长途,国内长途,国内长途,国内长途,国内长途,国内长途,国内长途,EEE,的Eee,EEE,EEE,EEE,EEE,EEE,EEE,FFF,呋,FFF,FFF,FFF,FFF,FFF,FFF,GGG,GGG, GGG,GGG,GGG,GGG,GGG,GGG,HHH,HHH,HHH,HHH,HHH,HHH,HHH,HHH,III,III,III,III,III,III,III,III,JJJ,JJJ,JJJ, JJJ,JJJ,JJJ,JJJ,JJJ,KKK,KKK,KKK,KKK,KKK,KKK,KKK,KKK,微光,微光,微光,微光,微光,微光,微光,微光,嗯,嗯,嗯,嗯, MMM,MMM,MMM,MMM,NNN,NNN,NNN,NNN,NNN,NNN,NNN,NNN,OOO,呜呜呜,呜呜呜,呜呜呜,OOO,PPP,PPP,PPP,PPP,PPP, PPP,PPP,PPP,QQQ,QQQ,QQQ,QQQ,QQQ,QQQ,QQQ,QQQ,存款准备金率,率Rrr,存款准备金率,存款准备金率,存款准备金率,存款准备金率,存款准备金率,存款准备金率,SSS,SSS,SSS,SSS,SSS,SSS, SSS,SSS,TTT,TTT,TTT,TTT,TTT,TTT,TTT,TTT,UUU,UUU,UUU,UUU,UUU,UUU,UUU,UUU,VVV,VVV,VVV,VVV,VVV,VVV,VVV, VVV,WWW,WWW,WWW,WWW,WWW,WWW,WWW,WWW,XXX,XXX,XXX,XXX,XXX,XXX,XXX,XXX,YYY,YYY,YYY,YYY,YYY,YYY,YYY,YYY, ZZZ,呼噜栈,ZZZ,ZZZ,ZZZ,ZZZ,ZZZ,ZZZ,     
当然。只需
$a++
即可增加Alpha字符。为简单起见,如果只需要一个或两个长度的设置,你可以做...
$single_set = array(); // array holding single-character sequence
$double_set = array(); // array holding double-character sequence

for ($v1 = 'a', $v2 = 'A'; $v1 !== 'aa'; $v1++, $v2++) {
    $single_set[] = $v1;
    $single_set[] = $v2;
    $double_set[] = $v1 . $v1;
    $double_set[] = $v1 . $v2;
    $double_set[] = $v2 . $v1;
    $double_set[] = $v2 . $v2;
    }

$set = $single_set + $double_set; // combined array sequence
    

要回复问题请先登录注册