За последние 24 часа нас посетили 25478 программистов и 1732 робота. Сейчас ищут 797 программистов ...

Подскажите цикл

Тема в разделе "PHP для новичков", создана пользователем q0b3rMAN, 8 окт 2017.

  1. q0b3rMAN

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

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Подскажите пожалуйста, цикл, готовый пример для этого кода:
    Код (Text):
    1.  
    2.                 if ($b >= 500 and $b < 1000) { $s = 1; }
    3.                 else {
    4.                     if ($b >= 1000 and $b < 1500) { $s = 2; }
    5.                     else {
    6.                         if ($b >= 1500 and $b < 2000) { $s = 3; }
    7.                         else {
    8.                             if ($b >= 2000 and $b < 2500) { $s = 4; }
    9.                             else {
    10.                                 if ($b >= 2500 and $b < 3000) { $s = 5; }
    11.                                 else {
    12.                                     if ($b >= 3000 and $b < 3500) { $s = 6; }
    13.                                     else {
    14.                                         if ($b >= 3500 and $b < 4000) { $s = 7; }
    15.                                         else {
    16.                                             if ($b >= 4000 and $b < 4500) { $s = 8; }
    17.                                             else {
    18.                                                 if ($b >= 4500 and $b < 5000) { $s = 9; }
    19.                                                 else {
    20.                                                     // ....
    21.                                                 }
    22.                                             }
    23.                                         }
    24.                                     }
    25.                                 }
    26.                             }
    27.                         }
    28.                     }
    29.                 }
     
  2. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    PHP:
    1.     for ($i = 1; $i<10; $i++) {
    2.         if (($this->b>=$i*500) && ($this->b<($i+1)*500)) {
    3.             $this -> s = $i;
    4.         }
    5.     }
    6.     echo $this -> s;
     
  3. q0b3rMAN

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

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Спасибо, но после замены моего кода на Ваш, перестает выполнятся код, без вывода ошибок
     
  4. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    у меня все работало. Показывайте свой код полностью.
     
  5. q0b3rMAN

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

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Я показал код полностью )
    В $b - цифры
    Код (Text):
    1. <?php
    2. $b = 4500;
    3.                      for ($i = 1; $i<10; $i++) {
    4.         if (($this->b>=$i*500) && ($this->b<($i+1)*500)) {
    5.             $this->s = $i;
    6.         }
    7.     }
    8.     echo $this->s;
    9. ?>
    На чистом index.php

    Fatal error: Uncaught Error: Using $this when not in object context in /opt/lampp/htdocs/index.php:4 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/index.php on line 4
     
  6. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    PHP:
    1.     $b = 4500; $s = 0;
    2.      for ($i = 1; $i<10; $i++) {
    3.          if (($b>=$i*500) && ($b<($i+1)*500)) {
    4.              $s = $i;
    5.          }
    6.      }
    7.     echo $s;
     
  7. q0b3rMAN

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

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Спасибо, все работает
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ребят, вы страдаете фигней.
    Данная задача решается в одну строчку:
    PHP:
    1. $s = (int)($b/500);
    Городить миллион ифов или циклы для вычисления чего-то, что может быть описано формулой - это сюрреализм какой-то. По возможности избегайте этого.
    --- Добавлено ---
    @Сереганек, вот ты когда это писал:
    Задумывался о том, что число $b может быть, скажем.. больше 12000? Ты же увидел закономерность в коде автора. Ты ж просек фишку с кратностью 500. Что ж ты дальше не развил эту мысль? :(
     
    acso нравится это.
  9. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Блин, почти E=mc^2! :)
    Да, решил в лоб, как попросили, а нужно было только выйти чуток за рамки условия и все. Плохо, что не заметил сам, хорошо, что сделали замечание, я ведь тоже учусь.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Есть такая закономерность - чем прямее и лобовее решение, тем больше вероятность, что это полуживой костыль, который подкосится на любом чихе и похоронит остальную систему.

    Это вот знаешь, есть дом. В доме есть двери, стены, лестницы. Можно пользоваться ими и все будет ок. А можно взять перфоратор побольше и ломиться НАПРЯМУЮ. Два-три раза сработает. И даже даст выигрыш во времени при перемещении между точками со сложным маршрутом. А дальше...либо ты потом вернешься, заделаешь все дыры в перекрытиях и начнешь пользоваться дверями, либо продолжишь в таком духе и здание, в один прекрасный день, просто рухнет.

    В общем, я к чему это - учись отличать добро ото зла.
     
  11. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Принято :)