At 07:27 27/11/2002, Andi Gutmans wrote:
I think that the patch is ok. I think you might be mixing it with the overloading that I implemented for objects a while ago, which was a bad idea. Here - we're already converting the string to a number. If it doesn't 'look like a number', we end up having it at 0, which is the useless default. Getting it to work with a few extra cases doesn't hurt us in any way that I can tell. Standard disclaimers apply - I might be missing something.At 04:41 PM 11/26/2002 -0500, Daniel Cowgill wrote:Hmm, this is definitely interesting. The result of the second expression should be 0 too. I haven't had time to check why this happens as all conversions in zend_operators.c are with base 10. I vaguely remember someone changing something in this area a while ago.So why do the conversion in arithmetic? This seems bizarrely inconsistent to me:<? print (int) "0xA" + 0; // prints 0 print (int) ("0xA" + 0); // prints 10 ?> I think it's reasonable to expect those expressions to return the same value.
BTW in PHP 4.0.4 this prints out "1" (the second expression) which doesn't make much sense.
The reason for this is that is_numeric_string() which is used in add_function() does convert hexadecimals whereas all other code in zend_operators.c doesn't.
This is a pretty bad inconsistency which should be addressed.
Zeev
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php