2006/6/4, Rasmus Lerdorf <[EMAIL PROTECTED]>:

tedd wrote:
> Hi gang:
>
> Here's your opportunity to pound me again for not knowing the basics of
php.
>
> I vaguely remember something like this being discussed a while back, but
can't find the reference.
>
> In any event, if one uses --
>
> for ($i="a"; $i<"z"; $i++)
>   {
>   echo($i);
>    }
>
> -- it stops at "y"
>
> But, if you use --
>
> for ($i="a"; $i<="z"; $i++)
>   {
>   echo($i);
>    }
>
> -- it prints considerably more characters after "z" than what one would
normally expect -- why is that?
>
> Just stopping at "z" would seem to make more sense, wouldn't it? After
all, when $i = "z" in the first expression, then wouldn't $i be equal to "z"
in the second expression and thus halt the operation?
>
> What am I missing here?

It's a bit of a quirk.  "z"++ is "aa" and "aa" < "z".  I would guess
this would loop until until just before "za" which would be "yz".


What?
"z"++ < "z" returns true? =S
Is there a reason for this? Why aren't they handled like C chars?

It's a bit like looping through the hexadecimal characters.  You would
have the same effect.  However instead of being base-16 with 0-9-a-f you
have base-26 using a-z.


0xF++  would be 0x10 which is greater than 0xF (0xF < 0x10). It's not the
same.

-Rasmus

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Reply via email to