I want to calculate the average value (or other calculation if possible) of several custom field values in a post. For example, I have 4 custom fields in a post, custom1 to custom4, value from 1 to 4 and I want to display the average value. Is there any way to do that?
1 Answer
You can try this to fetch the custom values:
$c1 = get_post_meta( get_the_ID(), 'custom1', TRUE );
$c2 = get_post_meta( get_the_ID(), 'custom2', TRUE );
$c3 = get_post_meta( get_the_ID(), 'custom3', TRUE );
$c4 = get_post_meta( get_the_ID(), 'custom4', TRUE );
Then to calculate the average:
// check if c1, c2, c3 and c4 are all set:
if( strlen($c1) * strlen($c2) * strlen($c3) * strlen($c4) > 0 ){
// convert the values from string to int/float:
$c1 = 1 * $c1;
$c2 = 1 * $c2;
$c3 = 1 * $c3;
$c4 = 1 * $c4;
// calculate the average:
$avg = ($c1 + $c2 + $c3 + $c4) / 4 ;
// output:
// var_dump($avg);
printf( "The average is %.2f", $avg ); // with two decimals:
}else{
echo " missing value! ";
}
-
Thank you for the fast answer. It works very well and output "float(7.625)". Can I display the number only, with one decimal place?– MiloCommented May 25, 2013 at 2:57
-
ok great it worked out for you. You can use various PHP functions to format your output, for example with
printf()
ornumber_format()
. Please check out the updated answer.– birgireCommented May 25, 2013 at 3:06 -
I've managed to come up with my desired output. Thanks very much for the help, you are awesome :)– MiloCommented May 25, 2013 at 3:18