Verwenden von PHP, um Buchstaben zu erhöhen, während Sie durch Kapitulationen radeln

StackOverflow https://stackoverflow.com/questions/4841497

  •  27-10-2019
  •  | 
  •  

Frage

Ich arbeite an einem Projekt, bei dem ich Buchstaben wie diesen durchlaufen muss: a, A, b, B ... z, Z, aa, Aa, aA, AA, bb ... zz, ZZ... in PHP.

Ist dies auf skalierbare Weise möglich?

War es hilfreich?

Lösung

Sind Sie sich nicht sicher, wonach Sie suchen?

$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;
  }
}

Andere Tipps

Das Berechnen von Permutationen ist eine ziemlich schwere Aufgabe.Dies wird speziell für Ihren Fall durchgeführt, bei dem zwei Zeichenpermutationen des Satzes berechnet werden, der alle Klein- und Großbuchstaben enthält (ich habe die Funktion nicht getestet, aber Sie sollten in der Lage sein, herauszufinden, wie sie Fehler behebtLass dich wenigstens anfangen).

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 und $uppercase sind Arrays, die die ASCII-Werte für a-z bzw. A-Z enthalten.

Ändern Sie nach Bedarf.

<?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 ", ";
    }

?>

So sieht die Ausgabe aus:

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,

Dieser Code schreibt eine Zeile mit Elementen, die 1 Zeichen breit sind, dann eine Zeile mit 2 Zeichen usw.

Für jede Breite werden alle Permutationen gedruckt, indem die Buchstaben iteriert und von 0 bis 2 ^ Breite gezählt und basierend auf Binärbits groß geschrieben werden.

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)

Der Code:

$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";
}

Ausgabe:

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, 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, Ddd, dDd, DDd, ddD, DdD, dDD, DDD, eee, Eee, eEe, EEe, eeE, EeE, eEE, EEE, fff, 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, lll, Lll, lLl, LLl, llL, LlL, lLL, LLL, mmm, Mmm, mMm, MMm, mmM, MmM, mMM, MMM, nnn, Nnn, nNn, NNn, nnN, NnN, nNN, NNN, ooo, Ooo, oOo, oOo, ooO, OoO, oOO, oOO, ppp, Ppp, pPp, PPp, ppP, PpP, pPP, PPP, qqq, Qqq, qQq, QQq, qqQ, QqQ, qQQ, QQQ, rrr, Rrr, rRr, RRr, rrR, RrR, rRR, 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, JJJ, JJJ, JJJ, JJJ, JJJ, JJJ, JJJ, JJJ, zzz, Zzz, zZz, ZZz, zzZ, ZzZ, zZZ, ZZZ,

Sicher.Alpha-Zeichen können nur mit $a++ inkrementiert werden.Der Einfachheit halber können Sie ... tun, wenn nur ein Satz mit einfacher oder doppelter Länge benötigt wird

$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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top