phpbar.de logo

Mailinglisten-Archive

[php] A-Z in for-Schleife

[php] A-Z in for-Schleife

Rainer Krauss php_(at)_phpcenter.de
Tue, 17 Apr 2001 20:25:50 +0200


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