代码之家  ›  专栏  ›  技术社区  ›  Evgeniy Chorniy

如何在php中优化代码以实现循环

php
  •  -1
  • Evgeniy Chorniy  · 技术社区  · 8 年前

    根据步长的不同,阵列的深度会发生变化

    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 回复  |  直到 8 年前
        1
  •  0
  •   deceze    8 年前

    在我看来,这样的事情应该:

    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(...);
    
    }
    
    推荐文章