За последние 24 часа нас посетили 86377 программистов и 4667 роботов. Сейчас ищут 1874 программиста ...

Нужна помощь по коду

Тема в разделе "Сделайте за меня", создана пользователем Неугомонный, 21 июн 2023.

  1. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    Всем привет, как сделать чтобы можно было два переключателя применять к переменной $var3? чтобы вышло filter($var3, [1,2])
    Понимаю что через массив нужно перебрать, крутится в голове что-то а не выходит :mad:
    PHP:
    1. <?
    2. function filter($var, $type)
    3. {
    4.      switch ($type)
    5.      {
    6.          case 1: $var = 'intval('.$var.')';
    7.          break;
    8.          case 2: $var = 'trim('.$var.')';
    9.          break;
    10.      }
    11.      return $var;
    12. }
    13. $var3 = 233;
    14. echo filter($var3, 1);
    15. ?>
     
    #1 Неугомонный, 21 июн 2023
    Последнее редактирование: 21 июн 2023
  2. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
  3. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    Часов 10 кручу , верчу , мне это не о чем не говорит:eek:
     
  4. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    Из приведенного вами примерного кода, можно понять, что вы пытаетесь определить присутствует ли в некоем массиве определенное значение.
    А можно и не понять.
    Попробуйте своими словами описать работу сценария. По пунктам. Дать примерные входные данные, и ожидаемый результат.
     
    MouseZver и artoodetoo нравится это.
  5. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Код (Text):
    1. <?
    2. function filter($var, $type)
    3. {
    4.      switch ($type[0])
    5.      {
    6.          case 1: $var = 'intval('.$var.')';
    7.          break;
    8.          case 2: $var = 'trim('.$var.')';
    9.          break;
    10.      }
    11.      switch ($type[1])
    12.      {
    13.          case 1: $var = 'intval('.$var.')';
    14.          break;
    15.          case 2: $var = 'trim('.$var.')';
    16.          break;
    17.      }
    18.      return $var;
    19. }
    20. $var3 = 233;
    21. echo filter($var3, [1,2]);
    22. ?>
     
  6. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    @antoniii, а на три переключателя ещё одну копи-пасту разводить )))
     
  7. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Зато думать не надо как код сократить. ;)
     
  8. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Автор темы куда то исчез. Ему надо научиться формулировать задачу и излагать свои мысли понятно. А вообще, когда что то просишь сделать за себя, часто получаешь не то, что хочешь.
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    Обычно и сразу https://www.govnokod.ru/28801
    --- Добавлено ---
    Ответ во втором посту был дан. Дальше пусть в носу автор ковыряется.
     
  10. Aleksandr.B

    Aleksandr.B Активный пользователь

    С нами с:
    2 фев 2023
    Сообщения:
    159
    Симпатии:
    41
    Адрес:
    Барнаул
    PHP:
    1. interface IFilter
    2. {
    3.     public function getFilter($var): string;
    4. }
    5.  
    6. class IntValFilter implements IFilter
    7. {
    8.  
    9.     public function getFilter($var): string
    10.     {
    11.         return "intval($var)";
    12.     }
    13.  
    14. }
    15.  
    16. class TrimFilter implements IFilter
    17. {
    18.     public function getFilter($var): string
    19.     {
    20.         return "trim($var)";
    21.     }
    22. }
    23.  
    24. class Filter
    25. {
    26.  
    27.     /**
    28.      * @var IFilter[]
    29.      */
    30.     private array $filters = [];
    31.  
    32.     public function add(IFilter $filter): self
    33.     {
    34.         if (!in_array($filter, $this->filters)) {
    35.             $this->filters[] = $filter;
    36.         }
    37.  
    38.         return $this;
    39.     }
    40.  
    41.     public function withIntValFilter(): self
    42.     {
    43.         return $this->add(new IntValFilter);
    44.     }
    45.  
    46.     public function withTrimFilter(): self
    47.     {
    48.         return $this->add(new TrimFilter);
    49.     }
    50.  
    51.  
    52.     public function execute($var)
    53.     {
    54.         foreach ($this->filters as $filter) {
    55.             echo $filter->getFilter($var);
    56.         }
    57.     }
    58. }
    59.  
    60. $filter = (new Filter)
    61.     ->withTrimFilter()
    62.     ->withIntValFilter();
    63. $filter->execute(2222);
     
  11. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Я понял что простота нынче не в моде. Как в одежде. Зато в моде оскорбления.
     
  12. neste

    neste Новичок

    С нами с:
    26 июл 2021
    Сообщения:
    8
    Симпатии:
    0
    Копипаста к простоте не имеет отношения. Это лишний код который кому-то придется читать и сопровождать. Не беда когда там десять строчек, но не сушествует проектов такого размера - обычно копипастятся сотни строк и вот за это уже хочется их автора лишить рук.
     
  13. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Иногда проще сделать так. Это похоже на ситуацию, когда для двух шагов по комнате нужно купить ботинки. А смысл?
     
  14. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    если чел не может прочитать/понять простейший цикл -- клиника, нужен препод, который такое разжуёт
     
  15. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Чтобы сосчитать до двух нужен цикл? Даже если это так, то промежуточный вариант всегда идет перед окончательным. Кидайте какашками в разработчиков первого PHP! Он тоже не имел многих тех фишек, которые имеет теперь. Впрочем, вам этого не понять. Кто то сделает за вас всю работу, а вы увидите, как это можно усовершенствовать и заклеймите сделавшего профаном. Сидели бы лучше.
     
  16. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    Тёзка, чтобы досчитать до двух обязан быть цикл.
    первое похапэ в душЕ не трахаю, с третьего начинал (модемом в терминалне), и что?
    я вижу, что в данном топике ты дал рабочее, но ни в коем случае не расширяемое решение, за сим всё
     
  17. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71