За последние 24 часа нас посетили 21972 программиста и 1149 роботов. Сейчас ищут 487 программистов ...

Как дать обозначения диапазону цифр

Тема в разделе "PHP для новичков", создана пользователем AnteFil, 25 ноя 2022.

  1. AnteFil

    AnteFil Активный пользователь

    С нами с:
    14 янв 2014
    Сообщения:
    531
    Симпатии:
    4
    Пишу рейтинг с таким условием если у пользователя 15 лайков это 1 бал или 150 это 10 баллов и тд. Подскажите как это сделать? Всё через if делать ?? Типа
    PHP:
    1. if($s>=0 and <=10) { echo '1 балл';}
    2. if($s>=10 and <=20) { echo '2 балл';}
    3. if($s>=20 and <=30) { echo '3 балл';}
    4. Вот так или есть другой подход ?
     
  2. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    swith ($s){
    case '1': echo('1');break;
    }
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    ну по вашим данным - это просто целочисленное деление на 15
    PHP:
    1. $likes = 15;
    2. $ball = ceil($likes/15);
    3. echo "баллов: $likes";
     
    #3 ADSoft, 25 ноя 2022
    Последнее редактирование: 25 ноя 2022
    AnteFil нравится это.
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Я бы создал функцию/метод, которая бы считала как целочисленное деление на 10. И везде где надо вычисленный рейтинг, использовал бы её. Если в какой-то момент я решаю что рейтинг надо считать нелинейно, я меняю код только в функции. Чисто для примера:

    Код (Text):
    1.  
    2. // 0 - 10: 1,
    3. // 11 - 20: 2,
    4. // 21 - 30: 3 ...
    5. // 31 - 99: всё ещё рейтинг 3
    6. // от 100 баллов: 4 - ... по баллу за каждую сотню
    7. function rateByPoints(int $points): int
    8. {
    9.     if ($points <= 30) {
    10.         return (int) ceil($points / 10);
    11.     }
    12.     return 3 + (int) floor($points / 100);
    13. }
     
    AnteFil нравится это.