PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bug in PHP?


blue
04.04.07, 22:42:13
Nabend,

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


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


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

Wenn ich allerdings nur bis Y zähle:


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):


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


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
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
@Blue
Recht umständlich oder ;)


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 ;)