<?php
for ($i = 'a'; $i <= 'z'; $i++)
echo "$i\n";
Dieses Snippet gibt die folgende Ausgabe aus (Zeilenumbrüche werden durch Leerzeichen ersetzt):
abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai aj ak al am ao ap aq ar wie bei au av aw ax ay az ba bb bc bd bf bg bh bi bj bk bl bm bn bo bp bq b bs bu bv bw bx von bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd df dg dh dj dk dl dm dn dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef zB eh ei ej ek el em en eo ep eq er es eu ev ew ex ... on to yz
$c = 'a';
, der Punkt ist, dass es in C einen Char-Typ (Zeichen 1-Symbol) gibt, aber nicht in PHP, wenn Sie PHP mitteilen$c = 'a';
- bedeutet, dass dies eine Zeichenfolge mit nur 1 Zeichen ist. Aus diesem Grund kann U 28 Zeichen in PHP nicht ausreichend durchlaufen. Ich hoffe, dass jeder Programmierer Low-Level-Sprachen und starkes Tippen lernen wird, ohne dabei die mathematischen Praktiken zu vergessen, die ihm helfen, stärker zu werden.==
oder!=
) zu ermitteln, lesen Sie diese Antwort auf eine verwandte Frage .Antworten:
Aus den Dokumenten :
Aus Kommentaren: -
Es sollte auch beachtet werden, dass
<=
es sich um einen lexikografischen Vergleich handelt'z'+1 ≤ 'z'
. (Seit'z'+1 = 'aa' ≤ 'z'
. Aber'za' ≤ 'z'
ist das erste Mal, dass der Vergleich falsch ist.) Brechen, wann$i == 'z'
zum Beispiel funktionieren würde.Beispiel hier .
quelle
ord()
also habe ich es nie bemerkt.'aa'
ist lexikographisch kleiner als'z'
das ist , warum die Schleife wird fortgesetzt. Und es hört auf,'yz'
weil'za'
größer als istz
. Überprüfen Sie dieses Beispiel .Sobald 'z' erreicht ist (und dies ein gültiges Ergebnis in Ihrem Bereich ist, erhöht $ i ++ es auf den nächsten Wert in Folge), ist der nächste Wert 'aa'; und alphabetisch ist 'aa' <'z', so dass der Vergleich nie erfüllt wird
quelle
Andere Antworten erklären das beobachtete Verhalten des veröffentlichten Codes. Hier ist eine Möglichkeit, das zu tun, was Sie wollen (und es ist sauberer Code, IMO):
Antwort auf ShreevatsaRs Kommentar / Frage zur Bereichsfunktion : Ja, es wird der "richtige Endpunkt" erzeugt, dh die an die Funktion übergebenen Werte liegen im Bereich. Zur Veranschaulichung lautete die Ausgabe des obigen Codes:
quelle
Andere haben bereits gesagt, warum PHP nicht zeigt, was Sie erwarten. So erhalten Sie das gewünschte Ergebnis:
quelle
Warum nicht einfach benutzen
range('a','z')
?quelle
Versuchen Sie diesen Code. Ich denke, dieser Code wird Ihnen hilfreich sein.
26 Buchstaben nacheinander anzeigen.
quelle
quelle
Auch dies kann verwendet werden:
quelle
PHP hat die Funktion, Buchstaben zu schleifen und kann über einzelne Zeichen hinausgehen. Der Rest wird auf diese Weise erledigt: aa ab ac ... zz und so weiter.
Versuche dies:
quelle
Die obigen Antworten sind zwar aufschlussreich und ziemlich interessant (ich wusste nicht, dass es sich so verhalten würde, und es ist gut zu sehen, warum.
Die einfachste Lösung (obwohl vielleicht nicht die sinnvollste) wäre, die Bedingung in $ i! = 'Z' zu ändern.
quelle
Das PHP betrachtet 'AA' nicht als kleiner als 'Z'. Der beste Weg, dies zu machen, ist:
abcdefghijklmnopqrstuvwxyz
quelle
Vielleicht funktioniert dieser Code. Es ist einfach und kann verstanden werden:
Dabei ist 26 die Gesamtzahl der Buchstaben im Alphabet.
quelle
Wow, ich wusste wirklich nichts darüber, aber es ist kein großer Code, den Sie versuchen können. Echo "z" nach Schleife Mark ist absolut richtig. Ich verwende seine Methode, aber wenn Sie eine Alternative wollen, können Sie dies auch versuchen
quelle