简化包含外部变量的嵌套循环

时间:2019-03-06 13:29:38

标签: php simplify divide-and-conquer

我正在尝试简化如下所示的PHP代码:

var resources = ["user-john", "user-doe", "students-Milan"],
    result = resources.reduce(
        (r, s) =>
            ((key, value) => Object.assign(r, { [key]: [].concat(r[key] || [], value) }))
            (...s.split('-')),
        {}
    );
  
console.log(result);

这是我遇到的问题:

  • 这些嵌套的foreach真的很丑,我很乐意在另一个函数中使用第二个。但是它使用在外部创建和使用的变量。我已经在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; } 中使用了引用,即使它不是很好。
  • 所有if的条件都不同,并且使用不同的变量,您是否知道将这种情况概括的任何方法?

我可以重写大部分功能,所以我也很高兴听到其他设计思想。

[EDIT] mark函数通过一些条件和转换将元素添加到$ gather中。

[EDIT]添加了更多详细信息。

0 个答案:

没有答案