Re: When is "z" != "z" ?
| From: | Martin Alterisio | Date: | Tue, 06 Jun 2006 02:12:55 +0000 |
| Subject: | Re: When is "z" != "z" ? | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-237435@lists.php.net to get a copy of this message | ||
2006/6/5, Larry Garfield <larry@garfieldtech.com>:
On Monday 05 June 2006 14:56, Martin Alterisio wrote: 2006/6/5, tg-php@gryffyndevelopment.com <tg-php@gryffyndevelopment.com>:You misunderstood me, I completely understand how the operators function, but you're saying it makes sense the way their functionality is assigned, what I want to know is the reasons you have that support those affirmations. I completely understand that string comparison is done alphabetically, but how does having the functionality for the ++ operator create a sequence that are inconsistent with the comparison operator, makes sense?This is just one of those cases where the designers had to make a judgement call on how things were going to operate. It makes sense if you look at the two things separately (incrementing vs string'greatness'evaluation) and makes sense that how they chose to implement the functions are two valid choices among many ways that it could havebeenhandled.How does it make sense? I don't understand your argument, can you explain it a little bit more? See Robert Cummings' post. < and > are being interpreted in this case for alphabetical order. Read "<" as "alphabetically before", and <= as "alphabetically before or string-equal to". Is a alphabetically before or string-equal to z? TRUE. Is b alphabetically before or string-equal to z? TRUE. ... Is z alphabetically before or string-equal to z? TRUE. (string-equal) Is aa alphabetically before or string-equal to z? TRUE. (a < z alphabetically, the second character is never checked). Is ab alphabetically before or string-equal to z? TRUE. ... Is yz alphabetically before or string-equal to z? TRUE. Is za alphabetically before or string-equal to z? FALSE. (a alphabetically after NULL character. Bob is alphabetically before Bobby for the same reason.) See how the comparison works? It's a purely alphabetic comparison. As for the increment, it actually would never have occurred to me to ++ a string before this thread, honestly. :-) However, what it appears to be doing (and I'm sure Rasmus will correct me if I'm wrong) is using a "string base" instead of a numeric base. Thus a++ = b, b++=c, etc. z++ "rolls over" to the next "digit" (which because it's a string goes to the right rather than the left), and resets. So just as 9++ rolls over to 10, z rolls over to aa. Does that make more sense?