From: cr.vegelin on 15 Apr 2010 03:46 Hi All, Is there an option in PHP to change the behavior of NULL in PHP functions ? Now PHP uses NULL as a 0 (zero) for arithmetic, for example: NULL + 6 = 6 NULL * 6 = 0 NULL / 6 = 0 6 / NULL = Division by zero What I need is the same behavior as #N/A (or =NA()) in Excel, where: #N/A + 6 = #N/A #N/A * 6 = #N/A #N/A / 6 = #N/A 6 / #N/A = #N/A because arithmetic operations with "Unknown" operands should result to "Unknown" ... TIA, Cor
From: Ashley Sheridan on 15 Apr 2010 04:08 On Thu, 2010-04-15 at 09:46 +0200, cr.vegelin(a)gmail.com wrote: > Hi All, > > Is there an option in PHP to change the behavior of NULL in PHP functions ? > Now PHP uses NULL as a 0 (zero) for arithmetic, for example: > NULL + 6 = 6 > NULL * 6 = 0 > NULL / 6 = 0 > 6 / NULL = Division by zero > > What I need is the same behavior as #N/A (or =NA()) in Excel, where: > #N/A + 6 = #N/A > #N/A * 6 = #N/A > #N/A / 6 = #N/A > 6 / #N/A = #N/A > > because arithmetic operations with "Unknown" operands should result to "Unknown" ... > > TIA, Cor You can't really, because PHP is a loosely typed language, which means it silently converts values as required by the situation. When you use mathematical operators, PHP converts the values to numbers, and NULL maps to a 0 (as does the boolean false and an empty string) The only way I can see to fix your problem is to check the value of the variables you are working on with something like is_int() Thanks, Ash http://www.ashleysheridan.co.uk
From: kranthi on 15 Apr 2010 04:47 >> because arithmetic operations with "Unknown" operands should result to "Unknown" ... in PHP "Unknown" values are represented by NaN, not NULL http://php.net/manual/en/function.is-nan.php but what surprises me is is_nan(6/0) = (bool)false (along with a warning) >> Now PHP uses NULL as a 0 (zero) for arithmetic I dont expect anything different, because intval(null) is 0.
From: cr.vegelin on 15 Apr 2010 05:41 From: Ashley Sheridan To: cr.vegelin(a)gmail.com Cc: php-general(a)lists.php.net Sent: Thursday, April 15, 2010 10:08 AM Subject: Re: [PHP] changing NULL behavior in PHP arithmetic On Thu, 2010-04-15 at 09:46 +0200, cr.vegelin(a)gmail.com wrote: Hi All, Is there an option in PHP to change the behavior of NULL in PHP functions ? Now PHP uses NULL as a 0 (zero) for arithmetic, for example: NULL + 6 = 6 NULL * 6 = 0 NULL / 6 = 0 6 / NULL = Division by zero What I need is the same behavior as #N/A (or =NA()) in Excel, where: #N/A + 6 = #N/A #N/A * 6 = #N/A #N/A / 6 = #N/A 6 / #N/A = #N/A because arithmetic operations with "Unknown" operands should result to "Unknown" ... TIA, Cor You can't really, because PHP is a loosely typed language, which means it silently converts values as required by the situation. When you use mathematical operators, PHP converts the values to numbers, and NULL maps to a 0 (as does the boolean false and an empty string) The only way I can see to fix your problem is to check the value of the variables you are working on with something like is_int() Thanks, Ash http://www.ashleysheridan.co.uk Thanks for replying. I tried the predefined PHP constant NAN. However, NAN + 6 = 6, so NAN is can't be used either. To bypass the problem, I now use is_null(). is_int() can also be used, but does it have advantages over is_null() ? Thanks, Cor
From: Shawn McKenzie on 16 Apr 2010 21:41 On 04/15/2010 02:46 AM, cr.vegelin(a)gmail.com wrote: > Hi All, > > Is there an option in PHP to change the behavior of NULL in PHP functions ? > Now PHP uses NULL as a 0 (zero) for arithmetic, for example: > NULL + 6 = 6 > NULL * 6 = 0 > NULL / 6 = 0 > 6 / NULL = Division by zero > > What I need is the same behavior as #N/A (or =NA()) in Excel, where: > #N/A + 6 = #N/A > #N/A * 6 = #N/A > #N/A / 6 = #N/A > 6 / #N/A = #N/A > > because arithmetic operations with "Unknown" operands should result to "Unknown" ... > > TIA, Cor > In what cases do you have a null var? -- Thanks! -Shawn http://www.spidean.com
|
Next
|
Last
Pages: 1 2 Prev: problems with feature '--with-pdo-oci' RPM (spec) Next: class attributes and __construct |