From: cr.vegelin on
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
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
>> 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
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
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