在一个周期中,我遇到了一个硬代码,该硬代码是正确地固定下来以写下该代码留下的内容的一个步骤。
根据步骤的不同,数组的深度也会发生变化
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
);
}
}
答案 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(...);
}