Bajwa kapoor Bajwa kapoor - 1 month ago 10
MySQL Question

If-else statement to count some variable

I need some help to solved this algorithm problem with How a Person is popular in his city.

My situation

How the algorithm should work like
If a person "mark" has 500 friends in his city out of 500,000.

(500/500,000)*50,000 = 5


So
5
in
50,000
people Know him right.

But When friends count increase the 50,000 should decrease


If "sam" has 1000 friends then


(1000/500,000)*25000 = 5


So
5
in
25000
people know his name

Yes we could implement this in
if/else
condition
If so then i have to write 500 lines of code.

Is there another way to do this in PHP?

<?php
$totalfriends = 100;
$totali = 5000000;
$name = "Sam";


if ($totalfriends >= 100 && $totalfriends <= 499 ) {
$r = ($totalfriends/$totali)*50000;
echo round($r),' ',"in 50K People on City regonize this Profile";
}else if ($totalfriends >= 500 && $totalfriends <= 999) {
$r = ($totalfriends/$totali)*25000;
echo round($r),' ',"in 25K People on City know".$name;
}else{
echo "";
}
?>

Answer Source

is this what you are looking for?

foreach([100, 500, 543, 1000, 5000, 51000, 500000] as $my_friends)
   echo '5 in '. getScoreOf($my_friends) . "<br>";

function getScoreOf($my_friends){
   $of = 5;
   $total = 5e5; //that's 500,000 ;)
   $step = 100; //minimum step, so output is not "4604" but "4600"
   $out_of = $total / $my_friends * $of;
   return $out_of > $step? round($out_of / $step) * $step: round($out_of);
}

run it in sandbox


edit: solution merged with original code

<?php
$of = 5;
$totalfriends = 100; 
$name = "Sam";
echo $of ." in ". getScoreOf($of, $totalfriends) ." people in city know ". $name;

function getScoreOf($of, $my_friends){
   $total = 5e6; //that's 5,000,000 ;)
   $step = 100; //minimum step, so output is not "4604" but "4600"
   $out_of = $total / $my_friends * $of;
   return $out_of > $step? round($out_of / $step) * $step: round($out_of);
}