Mailinglisten-Archive |
----- Original Message ----- From: "Cyrill Schumacher" <CyrillSchumacher_(at)_swol.de> To: <php_(at)_phpcenter.de> Sent: Tuesday, April 17, 2001 9:33 AM Subject: Re: [php] A-Z in for-Schleife > > > Warum php diese Buchstabenkombinationen macht ist mir nicht klar > > Ehrlich gesagt, mir auch nicht :-) > > Das tolle daran ist ja, dass > > for($a=a; $a < z ;$a++){ echo "$a ";} > > die gewünschte ausgabe fast ergibt, nur das z fehlt. > > während > > for($a=a; $a <= z ;$a++){ echo "$a ";} > > bis yz durchläuft. kurioserweise > wird hier nicht bei z abgebrochen ... !??? Warum genau php das macht weiss ich auch nicht, aber irgendwie interpretiert php "Z"+1 als "AA": $y="Y"; echo $y++."<br>"; echo $y++."<br>"; echo $y; Bringt die ausgabe: Y Z AA Warum nun eine schleife, die auf <="Z" prueft nicht funktioniert ist klar, denn Z ist ja noch <="Z" und nach ++ ist "AA" auch <="Z" weil hierbei strings verglichen werden und da ist "AA" natuerlich vor "Z". Das endet dann voellig korrekt mit "YZ", weil "ZA" als string dann eben nichtmehr <="Z" ist. Warum aber "Z"+1=="AA" ist sehe ich logisch nicht, das duerfte eher wegen der internen programmierung so sein, nicht weil es einen logischen sinn macht. Mich wundert dabei auch ein wenig das "Z"+1 nicht etwa char(ord("Z")+1) ist oder "!!" oder dunno was ganz vorne in einer kontrolle nach dem alphabet steht. Das "AA" sieht schon gewollt aus - aber warum? (PHP kennt keine chars wie z.b. pascal, in dem "Z" ein string, 'Z' aber ein char ist - in dem fall koennte das eindeutig unterschieden werden da chars keine 2 zeichen sein koennen.) Kann man sowas einen bug nennen? Gibt es bei der verwendung von $z="Z"; $z++; $foo=$z; eine warning? (bin zu faul jetzt noch meine .ini zu aendern) Imho durchaus ne unangenehme fehlerquelle, wenn es auch eh nicht im sinne des erfinders ist strings mit integern zu addieren. _________________________________________________________ Do You Yahoo!? Get your free _(at)_yahoo.com address at http://mail.yahoo.com
php::bar PHP Wiki - Listenarchive