## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# Inspecting Program Data

Once you clear the parse error hurdle, you still may have some work to do before you reach the finish line. A program can be syntactically correct but logically flawed. Just as the sentence "The tugboat chewed apoplectically with six subtle buffaloes" is grammatically correct but meaningless nonsense, you can write a program that the PHP interpreter doesn't find any problems with but doesn't do what you expect.

If your program is acting funny, add some checkpoints that display the values of variables. That way, you can see where the program's behavior diverges from your expectations. Example 12-3 shows a program that incorrectly attempts to calculate the total cost of a few items.

Example 12-3. A broken program without debugging output

```\$prices = array(5.95, 3.00, 12.50);
\$total_price = 0;
\$tax_rate = 1.08; // 8% tax

foreach (\$prices as \$price) {
\$total_price = \$price * \$tax_rate;
}

printf('Total price (with tax): \$%.2f', \$total_price);```

Example 12-3 doesn't do the right thing. It prints:

`Total price (with tax): \$13.50`

The total price of the items should be at least \$20. What's wrong with Example 12-3? One way you can try to find out is to insert a line in the `foreach( )` loop that prints the value of `\$total_price` before and after it changes. That should provide some insight into why the math is wrong. Example 12-4 annotates Example 12-3 with some diagnostic `print` statements.

Example 12-4. A broken program with debugging output

`\$prices = array(5.95, 3.00, 12.50); ...`

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required