Всем привет, как сделать чтобы можно было два переключателя применять к переменной $var3? чтобы вышло filter($var3, [1,2]) Понимаю что через массив нужно перебрать, крутится в голове что-то а не выходит PHP: <? function filter($var, $type) { switch ($type) { case 1: $var = 'intval('.$var.')'; break; case 2: $var = 'trim('.$var.')'; break; } return $var; } $var3 = 233; echo filter($var3, 1); ?>
Из приведенного вами примерного кода, можно понять, что вы пытаетесь определить присутствует ли в некоем массиве определенное значение. А можно и не понять. Попробуйте своими словами описать работу сценария. По пунктам. Дать примерные входные данные, и ожидаемый результат.
Код (Text): <? function filter($var, $type) { switch ($type[0]) { case 1: $var = 'intval('.$var.')'; break; case 2: $var = 'trim('.$var.')'; break; } switch ($type[1]) { case 1: $var = 'intval('.$var.')'; break; case 2: $var = 'trim('.$var.')'; break; } return $var; } $var3 = 233; echo filter($var3, [1,2]); ?>
Автор темы куда то исчез. Ему надо научиться формулировать задачу и излагать свои мысли понятно. А вообще, когда что то просишь сделать за себя, часто получаешь не то, что хочешь.
Обычно и сразу https://www.govnokod.ru/28801 --- Добавлено --- Ответ во втором посту был дан. Дальше пусть в носу автор ковыряется.
PHP: interface IFilter { public function getFilter($var): string; } class IntValFilter implements IFilter { public function getFilter($var): string { return "intval($var)"; } } class TrimFilter implements IFilter { public function getFilter($var): string { return "trim($var)"; } } class Filter { /** * @var IFilter[] */ private array $filters = []; public function add(IFilter $filter): self { if (!in_array($filter, $this->filters)) { $this->filters[] = $filter; } return $this; } public function withIntValFilter(): self { return $this->add(new IntValFilter); } public function withTrimFilter(): self { return $this->add(new TrimFilter); } public function execute($var) { foreach ($this->filters as $filter) { echo $filter->getFilter($var); } } } $filter = (new Filter) ->withTrimFilter() ->withIntValFilter(); $filter->execute(2222);
Копипаста к простоте не имеет отношения. Это лишний код который кому-то придется читать и сопровождать. Не беда когда там десять строчек, но не сушествует проектов такого размера - обычно копипастятся сотни строк и вот за это уже хочется их автора лишить рук.
Иногда проще сделать так. Это похоже на ситуацию, когда для двух шагов по комнате нужно купить ботинки. А смысл?
Чтобы сосчитать до двух нужен цикл? Даже если это так, то промежуточный вариант всегда идет перед окончательным. Кидайте какашками в разработчиков первого PHP! Он тоже не имел многих тех фишек, которые имеет теперь. Впрочем, вам этого не понять. Кто то сделает за вас всю работу, а вы увидите, как это можно усовершенствовать и заклеймите сделавшего профаном. Сидели бы лучше.
Тёзка, чтобы досчитать до двух обязан быть цикл. первое похапэ в душЕ не трахаю, с третьего начинал (модемом в терминалне), и что? я вижу, что в данном топике ты дал рабочее, но ни в коем случае не расширяемое решение, за сим всё