#26914 [Opn->Bgs]: Comparison Operators not working with alpha characters
| From: | mgf@php.net | Date: | Thu, 15 Jan 2004 09:52:19 +0000 |
| Subject: | #26914 [Opn->Bgs]: Comparison Operators not working with alpha characters | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-53365@lists.php.net to get a copy of this message | ||
ID: 26914
Updated by: mgf@php.net
Reported By: rschwartz at ec dot rr dot com
-Status: Open
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Any
PHP Version: 4.3.4
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
Using ++ on a string is defined to increment 'z' -> 'aa' -> ... ->
'az'
-> 'ba' etc. The first value in this sequence which fails the <='z'
test is 'za' (the value after 'yz'), which explains the observed
behaviour of your 1st example.
In the 3rd example, your expectation is just plain wrong. After the
first iteration, 'a' will be incremented to 'b', which is plainly not
<= 'aa', so the loop terminates immediately.
Previous Comments:
------------------------------------------------------------------------
[2004-01-15 04:18:36] psyko at wyred dot mine dot nu
Same for version 4.3.3
------------------------------------------------------------------------
[2004-01-15 04:09:28] rschwartz at ec dot rr dot com
Description:
------------
I was testing a for loop with incrementing alpha characters. For
example, looping through a-z and printing those characters. It does
not seem to work as expected.
Reproduce code:
---------------
Ex 1:
for ($i = 'a'; $i <= 'z'; $i++) {
echo $i;
}
Ex 2:
for ($i = 'a'; $i < 'z'; $i++) {
echo $i;
}
Ex 3:
for ($i = 'a'; $i < 'aa'; $i++) {
echo $i;
}
Expected result:
----------------
Ex 1: Print a-z.
Ex 2: Print a-y.
Ex 3: Print a-z.
Actual result:
--------------
Ex1 loops through to 'yz' and does not work as expected.
Ex2 loops through to 'z', which is expected.
Ex3 dies after the first iteration and only prints 'a'.
I think this is an odd behavior. The < operator works as expected in
this example but the <= operator does not. It doesn't seem like a
consistent behavior. If I can remember correctly, I was able to get
this to work on an earlier version sometime ago.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=26914&edit=1