我如何优化我的代码在php中的周期

时间:2018-09-05 10:55:31

标签: php

在一个周期中,我遇到了一个硬代码,该硬代码是正确地固定下来以写下该代码留下的内容的一个步骤。

根据步骤的不同,数组的深度也会发生变化

for($i=0; $i < $size; $i += $step){
    //WTF ?
    if ($step == 1){
        $values = $this->metricsValues(
            $metrics,
            $metricHeaders
        );
    }

    if ($step == 2){
        $values[$d[$i]][$d[$i + 1]] = $this->metricsValues(
            $metrics,
            $metricHeaders
        );
    }

    if ($step == 3){
        $values[$d[$i]][$d[$i + 1]][$d[$i + 2]] = $this->metricsValues(
            $metrics,
            $metricHeaders
        );
    }

    if ($step == 4){
        $values[$d[$i]][$d[$i + 1]][$d[$i + 2]][$d[$i + 3]] = $this->metricsValues(
            $metrics,
            $metricHeaders
        );
    } 
}

1 个答案:

答案 0 :(得分:0)

在我看来,应该这样做:

for ($i = 0; $i < $size; $i += $step) {

    $target = &$values;

    // max(1, $j) to suppress any action when $step == 1
    for ($j = 0; max(1, $j) < $step; $j++) {
        $target = &$target[$d[$i + $j]];
    }

    $target = $this->metricsValues(...);

}