Упростить вложенные циклы, содержащие внешние переменные - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь упростить фрагмент кода PHP, который выглядит следующим образом:

public function gather($parameters, $infos)
{

    $gathered = [];
    $number = false;

    foreach ($infos as $info) {

        foreach ($parameters as  $parameter) {

            if (strlen($parameter['number'])) {
                $this->mark($parameter['number'], $info, $parameter, $gathered); // $gathered is passed by reference
                $number = true;
                continue;
            }

            if (strlen($parameter['default'])) {
                $this->mark($parameter['default'], $info, $parameter, $gathered); // $gathered is passed by reference
                continue;
            }

            if ($config['smth']) {
                doSomething(...);
            }
        }
    }

    if (number > 0) {
        doSomething(...);
    }

    return $gathered;
}

Вот проблемы, которые у меня есть:

  • Эти вложенные foreach действительно уродливы иЯ хотел бы, чтобы второй в другой функции.Но он использует переменные, которые создаются и используются снаружи.Я уже использовал ссылки с $gathered, даже если это не очень хорошо.
  • Условия всех операций if разные и используют разные переменные, знаете ли вы какой-нибудь способ обобщить случай, подобный этому?

Я могу переписать большие части функций, поэтому я буду рад услышать и другие идеи дизайна.

[EDIT] Функции пометки добавляют элементы в $ собранный с некоторыми условиями итрансформации.

[РЕДАКТИРОВАТЬ] Добавлено больше деталей.

...