if-else语句计算一些变量

时间:2016-01-05 11:51:20

标签: php mysql

我需要一些帮助来解决这个算法问题,如何一个人在他的城市中受欢迎。

我的情况

算法应该如何工作 如果一个人“标记”在他的城市中有500个朋友,那就是500,000。

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

所以550,000知道他是对的。

但是当朋友数量增加时,50,000人应该减少

  

如果“sam”有1000个朋友,那么

(1000/500,000)*25000 = 5

525000知道他的名字

是的,我们可以在if/else条件下实现此功能 如果是这样,那么我必须写500行代码。

还有另一种方法可以在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 "";
 }
?>

1 个答案:

答案 0 :(得分:1)

这就是你要找的东西吗?

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

编辑:解决方案与原始代码合并

<?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);
}