通过使用另一个for循环来缩短循环次数

时间:2018-05-04 14:36:07

标签: php for-loop

我正在尝试让我的for循环更短,请参阅之前和之后的,但我收到此错误Parse error: syntax error, unexpected 'U'是否可以这样使用它?

之前

<?php
for ($i=9; $i < 22; $i++) { 
//zet voor alle dagen van de week de gehuurde uuren in een array
$D1U[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[0]][$i][15];
$D2U[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[1]][$i][15];
$D3U[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[2]][$i][15];
$D4U[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[3]][$i][15];
$D5U[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[4]][$i][15];
$D6U[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[5]][$i][15];
$D7U[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[6]][$i][15];
}
?>

后的

<?php
for ($d=1; $d < 8; $d++) { 
$D[$d]U[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[0]][$i][15];
}
?>

2 个答案:

答案 0 :(得分:3)

您不能使用方括号来解决PHP中的"variable variables"问题。你需要使用连接和花括号来构造一个字符串,例如

$d = 1; $i = 2;
${'D' . $d . 'U' . $i} = 'foo';
echo $D1U2; // foo

通常情况下,带有数字的变量通常是一个不好的标志,因为访问它们所需的语法(如上所述)并不完全相同。它们本身也不具备可扩展性。如果您能够稍微重构一下,我建议使用数组,例如

$DU = [];

...

for ($d=1; $d < 8; $d++) { 
  $DU[$d][$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[0]][$i][15];
  ...

答案 1 :(得分:0)

使用变量变量。这是链接http://php.net/manual/en/language.variables.variable.php。也请参考使用此方法时要注意的注意事项

for ($d=1; $d < 8; $d++) { 
${'D'.$d.'U'}[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[0]][$i][15];
}