Avatar ·

Warum gibt dieser PHP-Code nicht die Buchstaben von A bis Z aus?

Hallo zusammen! Ich bin neu in PHP und versuche, alle Buchstaben des englischen Alphabets von A bis Z mit einer Schleife auszugeben. Ich habe folgenden Code geschrieben:\n\n```php\n\n```\n\nAber er gibt nicht nur A-Z aus, sondern eine endlose Sequenz: A B C D E F ... AA AB AC ... und so weiter, bis ein Laufzeitfehler auftritt. Warum passiert das? Im Condition steht doch eindeutig: $i <= 'Z'. Ich hatte erwartet, dass die Schleife beim Buchstaben Z stoppt. Aber sie läuft weiter. Erklärt mir bitte, woran das liegt? Wie organisiere ich die Iteration über die Buchstaben von A bis Z richtig? Vielen Dank im Voraus für eure Hilfe!\n\n<<>>\n

Warum stoppt die Schleife nicht bei 'Z'?

\n

Das Problem liegt darin, wie PHP mit String-Inkrementen umgeht. Wenn Sie $i++ für einen String schreiben, inkrementiert PHP den String gemäß der Perl-Konvention, nicht als Zeichen. Nach 'Z' kommt 'AA', dann 'AB', und so weiter. Der Vergleich $i <= 'Z' wird für Strings lexikografisch durchgeführt, und 'AA' ist lexikografisch kleiner als 'Z' (da 'A' < 'Z'), daher läuft die Schleife weiter. Um von A bis Z zu iterieren, verwenden Sie entweder range('A', 'Z') oder iterieren Sie über die ASCII-Codes mit chr().