• Status: Solved
• Priority: Medium
• Security: Public
• Views: 299

# PHP calculation

Hi here is my code, very simple
if (\$Type1 == "ISO" || \$Type1 == "NQ") { \$Total_SO1 = \$Shares1 * \$Price1; } else { \$Total_SO1 = 0; }
if (\$Type2 == "ISO" || \$Type2 == "NQ") { \$Total_SO2 = \$Shares2 * \$Price2; } else { \$Total_SO2 = 0; }
if (\$Type3 == "ISO" || \$Type3 == "NQ") { \$Total_SO3 = \$Shares3 * \$Price3; } else { \$Total_SO3 = 0; }
if (\$Type4 == "ISO" || \$Type4 == "NQ") { \$Total_SO4 = \$Shares4 * \$Price4; } else { \$Total_SO4 = 0; }
if (\$Type5 == "ISO" || \$Type5 == "NQ") { \$Total_SO5 = \$Shares5 * \$Price5; } else { \$Total_SO5 = 0; }
if (\$Type6 == "ISO" || \$Type6 == "NQ") { \$Total_SO6 = \$Shares6 * \$Price6; } else { \$Total_SO6 = 0; }
if (\$Type7 == "ISO" || \$Type7 == "NQ") { \$Total_SO7 = \$Shares7 * \$Price7; } else { \$Total_SO7 = 0; }

\$Total_SO = \$Total_SO1 + \$Total_SO2 + \$Total_SO3 + \$Total_SO4 + \$Total_SO5 + \$Total_SO6 + \$Total_SO7;

But it dose not work, can anyone see why. I have echo each of the variables and they all have the correct value except the total of each line os zero. out side of the if statement they work properly, please help.

Thanks

Rafael
0
rcleon
1 Solution

Commented:
Are you checking the values of \$TypeX correctly with your echo? There might be some additional spaces in the values that screw your tests, especially if you read them from a database.

Try debugging the values like this:

echo "<".\$Type1.">";

... to see any spaces.

0

Commented:
There is nothing obviously wrong with your code. The fragment supplied above works OK for me when supplied with the appropriate values.

Turn on error checking with

ini_set('display_errors',1); error_reporting(E_ALL);

at the start of your script. Also remember that PHP is case senstive with variable names so \$Price and \$price are not the same.
0

Commented:
@AriMc - it might be simpler to use trim

http://www.php.net/trim

\$Type1 = \$trim( \$Type1 );

and so on...
0

Commented:
My best guess is that your \$Type.. variables don't match either of the 2 strings.you are testing for. PHP variable names are case sensitive so double check that.

Also, if you really want to have the if-then-else on one line like that you can replace:

``````if (\$Type1 == "ISO" || \$Type1 == "NQ") { \$Total_SO1 = \$Shares1 * \$Price1; } else { \$Total_SO1 = 0; }
``````

with the ternary operator

``````\$Total_SO1 = (\$Type1 == "ISO" || \$Type1 == "NQ") ? \$Shares1 * \$Price1 : 0;
``````

Yes that is equivalent ;)
0

Commented:
bportlock: True, that would've been my next suggestion if the first debugging showed the values include spaces. :)

0

Commented:
@AriMc - never hurts to do it anyway, better safe than sorry.

Really this piece of code should have been written with arrays then used array_sum() to do all the dirty work, but we are where we are and I suspect that there is a lot of other code that would need alteration.

0

Author Commented:
Thank you ALL it works great.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.