Use the following function to find the percentage value of one number to another. If the $total parameter is zero then zero is returned as this would otherwise result in a division by zero error.

function get_percentage($total, $number) { if ( $total > 0 ) { return round(($number * 100) / $total, 2); } else { return 0; } }

Here are some examples of the function in action.

echo get_percentage(100,50).'%'; // 50% echo get_percentage(100,10).'%'; // 10% echo get_percentage(100,100).'%'; // 100% echo get_percentage(400,3).'%'; // 0.75% echo get_percentage(1234,4321).'%'; // 350.16%

## Comments

I just had to swap $total and 100 over for my purposes, i.e returning 100/200 as 50%.

Hello Philip, that formula does not generate the correct %, then I write the correct one: (number * 100) / total:

/*

return round(($number * 100) / $total, 2);

*/

Quite right. It must have been right at some point but it's clearly been wrong for a while.

Thanks for the correction! I've updated the code.

Really liked this post, thanks!