At 07:27 27/11/2002, Andi Gutmans wrote:
At 04:41 PM 11/26/2002 -0500, Daniel Cowgill wrote:
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.
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.
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.
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.

Zeev


--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to