The period concatenates a string, meaning it glues the two pieces together.
Concatenation is used for the sign and the number, because what you're doing is taking a plus or minus sign and attaching it to a number. The "$hp_p ." part you used is essentially glueing that number onto the sign and the number, when instead we want to add the two numbers together. Try this:
$signs = array('-', '+');
$hp_p=10;
$hp_p_rn=rand(1,10);
$new = $hp_p + ($signs[rand(0, 1)] . $hp_p_rn);
I grouped the sign and the random number together so that PHP knows it should do that first, kind of like the order of operations in a math problem. Now that PHP has concatenated (or glued together) the sign and the random number, it then adds the two numbers together, resulting in another number since its a simple math addition problem.
I hope I explained it well enough that you can make some sense out of it now, lol.