Spieleplanet Community

Spieleplanet Community (http://www.spieleplanet.eu/forum.php)
-   Internet & Coding (http://www.spieleplanet.eu/forumdisplay.php?f=50)
-   -   Bug in PHP? (http://www.spieleplanet.eu/showthread.php?t=4758)

blue 04.04.07 22:42:13

Bug in PHP?
 
Nabend,

ich versuche gerade vergeblich mit PHP die Buchstaben A bis Z mit einer Schleife auszugeben:

Code:

for($letter = 'A'; $letter <='Z'; $letter++) {
        echo($letter);
}

Allerdings, wenn der Zähler bei 'Y' ist und 1 addiert, kommt folgende Ausgabe:
Zitat:

ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZDADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZEAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZFAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZJAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZKAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZLALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNWNXNYNZOAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQWQXQYQZRARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYRZSASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZTATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZWAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYWZXAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWXXXYXZYAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZ
Wenn ich allerdings nur bis Y zähle:

Code:

for($letter = 'A'; $letter <='Y'; $letter++) {
        echo($letter);
}

Bekomme ich die Ausgabe von A bis Y ausgegeben. Ich bin also gezwungen den Code folgendermaßen abzuändern (hier mal mit do-while-Schleife):

Code:

        $letter = 'A';
        do {
                echo($letter);
                $letter++;
                if($letter == 'Y')
                {
                        echo($letter);
                        $letter = 'Z';
                        echo($letter);
                }
        }while($letter <='Y');

Ich frage mich aber, warum die erste Version nicht funktioniert :think:

BTW, momentan läuft PHP Version 4.4.5.

Pestilence 04.04.07 22:54:30

Also je öfter ich das durchgehe, desto unlogischer erscheint mir die Ausgabe des ersten Codes. Wenn er dir als letzten Buchstaben, beim zweiten Code, ein Z ausgeben würde, dann könnte ich es eventuell noch verstehen, aber sooo...

Ich werd mal gucken was sagt, wenn ich das bei mir durchlaufen lasse.

Edit:
Achja, ich erinnere mich warum ich mit aufgehört habe, mich damit zu beschäftigen. Jedesmal wenn ich meinen Apache starte, kommt die Fehlermeldung "Make_sock: could not bind to address 0.0.0.0:80".
Hab kein Bock mich damit zu beschäftigen.

Lord_Pinhead 07.04.07 16:13:04

@Blue
Recht umständlich oder ;)

Code:

for ($letter = 65; $letter <= 90; $letter++) {
        echo chr($letter)
}

Aso Pesti, wenn er auf den Socket nichts binden kann, läuft entweder schon ein Webserver oder du hast nicht ausreichend Rechte einen Port <=1024 zu verwenden

Pestilence 07.04.07 16:32:04

Es läuft kein Webserver und ich habe genügend Rechte.
Meinst du nicht das ich auf sowas billiges schon gekommen wäre?

Lord_Pinhead 07.04.07 16:45:54

Zitat:

Zitat von Pestilence
Es läuft kein Webserver und ich habe genügend Rechte.
Meinst du nicht das ich auf sowas billiges schon gekommen wäre?

Ehrlich? Jo, sonst hättest du entweder mal ne andere Version genommen oder mal zum Test den Port gewechselt.

blue 07.04.07 17:23:42

Zitat:

Zitat von Lord_Pinhead
@Blue
Recht umständlich oder ;)

Code:

for ($letter = 65; $letter <= 90; $letter++) {
        echo chr($letter)
}

Aso Pesti, wenn er auf den Socket nichts binden kann, läuft entweder schon ein Webserver oder du hast nicht ausreichend Rechte einen Port <=1024 zu verwenden

Lordy, Letter A ist die 65 und die 90 ist das 'Z'. Natürlich habe ich es ebenso über die ASCII Codes probiert, aber er gibt immer noch Shice aus!
Ah, ich seh grad die Funktion chr(). Das probier ich mal ...

Wow, mit chr() klappt es wunderbar! Danke Lordy ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:47:28 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Die Betreiber haften nicht für die Inhalte der User. Die Beiträge spiegeln ausschließlich persönliche Meinungen wider, und nicht die der Seitenbetreiber.