Calculating the price of digital media
I've been waiting for this question to be reopened because the formatting issues here are quite extraordinary! I think I'll keep this post to a clean code/code styling post exclusively, that way others can touch on purpose and implementations.

I think what's required here is a bullet point list, which I know is boring, but it's the easiest way to go line by line! Let's begin :)


Eeek! What in the world is calc_p()!? I immediately know nothing about your code. That's the opposite of what we want. Names should be meaningful and thorough. It looks like you're calculating a price, so a better name might be calculateBookPrice(). Functions are usually expected to be camelCase.
$arg1: bad name. $arg2: bad name. $arg3: bad name. What are these variables? We need description in these names!
I had no idea this function needed variables for func_get_args(). You limit the arguments to three, so I'd say add three parameters to the function. That or have something such as ... $someArguments for a parameter. (Obviously with a name that fits your code)
What is $bp? I immediately have converted this name to "blood pressure". However, that doesn't make sense. Now your reader is confused. See how important useful variable names are?
'ebook', 5, .08: what do all these have in common? I don't know why you chose them. If you need to, create (constants, if you have a class) variables and apply these values to a named variable.
I don't see a default to your switch. I need a default to function! It's best practice to use one anyways.
What in the world is $bp = ($bp + ($bp*$tax));? Hows about $bp *= ++$tax;? It's shorter and takes advantage PHP's combined operators and pre-increment operator. However, even this isn't too pretty. Perhaps refactor the code before it...
//Calclate shipping - this is a useless comment. Comment's should describe why.
It'd be nice to get some place in between statements: if(, '$'.$bp.
The condition for $arg3 == 'California' is empty, why not negate the comparison? ($arg3 != 'California')
$bp = $bp + 1 --> $bp++
Shouldn't you have a switch for the states you check against?
What is $norm? Are you referring to a person named Norman? Spell out a useful variable name!
You may want to look into money_format or formatCurrency... That whole block is hideous!
Some variables are like $final_price and some are like $totalprice! It's vital that you stay consistent!