繁体   English   中英

如何消除 3 行重复代码?

[英]How do I eliminate 3 lines of repetitive code?

三行重复两次。 怎样才能做得更好?

 $selectedComponentsNewTmp = $this->getNewSelectedComponents(); $selectedComponentsNew = []; foreach ($selectedComponentsNewTmp as $component) { $selectedComponentsNew[$component['componentGroup']['Count_0']]['name'] = $component['componentGroup']['name']; $selectedComponentsNew[$component['componentGroup']['Count_0']]['value'] = $component['coverage']['value']?? ''; $selectedComponentsNew[$component['componentGroup']['Count_0']]['txt'] = $component['coverage']['txt']?? ''; } $selectedComponentsOldTmp = $this->getOldSelectedComponents(); $selectedComponentsOld = []; foreach ($selectedComponentsOldTmp as $component) { $selectedComponentsOld[$component['componentGroup']['Count_0']]['name'] = $component['componentGroup']['name']; $selectedComponentsOld[$component['componentGroup']['Count_0']]['value'] = $component['coverage']['value']?? ''; $selectedComponentsOld[$component['componentGroup']['Count_0']]['txt'] = $component['coverage']['txt']?? ''; }

您也许可以使用一个数组来指定每行中使用的最终值,并在外循环中迭代该数组。

$args=['name','value','txt'];
$new=$old=[];


foreach( $this->getNewSelectedComponents() as $component) {
    foreach( $args as $arg ) $new[$component['componentGroup']['Count_0']][$arg] = $component['componentGroup'][$arg] ?? '';
}
foreach( $this->getOldSelectedComponents() as $component ) {
    foreach( $args as $arg ) $old[$component['componentGroup']['Count_0']][$arg] = $component['componentGroup'][$arg] ?? '';
}

您可以创建和使用function

function

function myFunction($selectedComponentsNew, $component) {
    $selectedComponentsNew[$component['componentGroup']['Count_0']]['name'] = $component['componentGroup']['name'];
    $selectedComponentsNew[$component['componentGroup']['Count_0']]['value'] = $component['coverage']['value'] ?? '';
    $selectedComponentsNew[$component['componentGroup']['Count_0']]['txt'] = $component['coverage']['txt'] ?? '';
}

用法

$selectedComponentsNewTmp = $this->getNewSelectedComponents();
$selectedComponentsNew = [];
foreach ($selectedComponentsNewTmp as $component) {
    myFunction($selectedComponentsNew, $component);
}

$selectedComponentsOldTmp = $this->getOldSelectedComponents();
$selectedComponentsOld = [];
foreach ($selectedComponentsOldTmp as $component) {
    myFunction($selectedComponentsOld, $component);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM