Дмитрий Макух

Скажите что лучше использовать array_reduce или foreach к чему себя приучать

6 1

Тимур Маликин

array_reduce - Чистая функция, я стараюсь использовать ее, но если мне надо менять состояние то foreach. Ну типа так -

foreach ($this->rules as $rule) {
            $error = $rule->apply($node)->getError();
            if (isset($error)) {
                $this->errors[] = $error;
            }
        }

Может не очень объяснил :)

0

Дмитрий Макух

А когда использовать array_filter, он в ответах учителя использован для удаления по id то есть для изменения состояния это хорошая практика или это как пример

0

Тимур Маликин

Нет, fiter тоже чистая функция, она вам тоже возвращает НОВЫЙ массив при этом не изменяя старый. И не производит сайд эффектов - не изменяет переменных других, не производит записи в файл. Можно, конечно, умеючи но это не правильно. Функция приняла данные и вернула новые.

1

Kirill Mokevnin

В php это распространено меньше, но в остальных языках использование функций высших порядков (там где они есть), это предпочтительная практика. Лично я не писал циклов в продакшен коде очень много лет и в коде хекслета (а кода много) нет ни одного цикла.

1

Андрей Свитлов

а что работает быстрее ?

0

Kirill Mokevnin

В императивных языках скорее всего работают циклы, но вы никогда (с очень высокой вероятностью) не упретесь в это. Оптимизация она на уровне количества итераций. Обязательно к прочтению: http://optimization.guide

0

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг».

Похожие вопросы

Максим Торбург 24 мая 2018 →

Странно, но без проверки на пустоту массива в каунт и тотале решение не проходит. Добавляя эти проверки, в...

Sergey Erofeev 02 ноября 2017 →

Пишу: $cart = new Cart(); $cart->add(new Item(1, "milk", 250)); $cart->add(new \Item(1, "milk", 250)); Ошиб...

Eugene Kalinowski 15 сентября 2017 →

Пожалуйста, исправьте удаление всего содержимого файла при нажатии ctrl+z, правда надоедает писать одно и т...

Nikita Baranovsky 22 июня 2017 →

Вопрос. Почему в данном коде: public function add(Item $item) { $this->items[] = $item; } мы испо...

Евгений Кожин 21 июня 2017 →

насколько корректно реализовывать remove через foreach ?