April 7, 2012

Bold Largest Value – Comparing Values

Question by Kevin Murphy

I’m trying to compare two numbers, and add an HTML class to the large one- in this case statistics for a video game. Now I could do $player1[stat]-$player2[stat] and if the result is negative, player2 had a large value or just do normal greater than or less than logic. But, the thing is, I have about 20 different statistics I have to compare and add the class.

What would be the easiest way of making the larger value bold?

I was going to try case switches but that seems tedious. 20 different if-statements also seemed unnecessary.

Thanks!

Edit: Just to be clearer, I need to echo the values as well, but have the largest bolded

$player1[kills] = 55;  
$player2[kills] = 40;  

$player1[deaths] = 15;  
$player2[deaths] = 10;

The desired result:

<table>  
    <tr> 
        <th>Statistic</th>
        <th>Player 1</th>   
        <th>Player 2</th>        
    </tr>
    <tr> 
        <th>Kills</th>
        <th><strong>40Player 2</th>        
    </tr>  
    <tr> 
        <th>Deaths</th>
        <th>15</th>   
        <th><strong>10</strong></th>        
    </tr>      
</table>

Another thing- less deaths is better, so is there a way to some how chose the smaller one for that instance?

Answer by Michael Berkowski

Retrieve the largest value from each group with something like:

$maxkills = max($player1['kills'], $player2['kills']);
$maxdeaths = max($player1['deaths'], $player2['deaths']);

On output:

if ($player1['kills'] == $maxkills) {
   // Add <strong> tag
   echo "<strong>{$player1['kills']}</strong>";
}
else {
   // output without <strong> tag
   echo $player1['kills'];
}

You can use a ternary operator to shorten this as well:

echo $player1['kills'] == $maxkills ? "<strong>{$player1['kills']}</strong>" : $player1['kills'];

By the way, please put quotes around your array keys. Although PHP parses them correctly (by assuming you meant to use strings instead of constants), it is issuing a notice for each time you do it even if those notices are just piling up in log files.

Answer by Starx

When you are retrieving the value of kills and death, add them onto a global array.

$kills = array();
$death = array();
while($row = mysql_fetch_assoc($query)) //... or some database operation
    $kills[] = $row['kills'];
    $death[] = $row['deaths';

    //do other details
}

Now find out the maximum of each values

$killMax = max($kills);
$deathMax = max($death);

Now wherever you are display compair to this

echo $player1['kill']==$killMax ? "<strong>".$killMax."</strong>" : $killMax;

Author: Nabin Nepal (Starx)

Hello, I am Nabin Nepal and you can call me Starx. This is my blog where write about my life and my involvements. I am a Software Developer, A Cyclist and a Realist. I hope you will find my blog interesting. Follow me on Google+

...

Please fill the form - I will response as fast as I can!