Php 使用另一个for循环缩短for循环

Php 使用另一个for循环缩短for循环,php,for-loop,Php,For Loop,我试图缩短for循环,请参见之前和之后,但我遇到了以下错误Parse error:syntax error,意外的“U”甚至可以这样使用它吗 以前 之后 使用变量。这是链接。另请参阅使用此方法时需要注意的事项 for ($d=1; $d < 8; $d++) { ${'D'.$d.'U'}[$i] = $resourceUsage['data']['usage']['110556']['2018'][5][$days[0]][$i][15]; } for($d=1;$d

我试图缩短for循环,请参见之前和之后,但我遇到了以下错误
Parse error:syntax error,意外的“U”
甚至可以这样使用它吗

以前


之后


使用变量。这是链接。另请参阅使用此方法时需要注意的事项

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

在PHP中不能使用方括号来表示地址。您需要使用连接和大括号来构造字符串,例如

$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];
  ...
$DU=[];
...
对于($d=1;$d<8;$d++){
$DU[$d][$i]=$resourceUsage['data']['usage']['110556']['2018'][5][$days[0]][$i][15];
...

$D[$D]U[$i]
是无效语法。执行
$D1U
$D2U
,…不是这里的方法。将其转换为数组。您可以使用二维数组来完成它,
$D[$i]
按照以下方式重写它:`for($i=1;$i<22;$i++){for($D=1;$D<8;$8++)$D[$D[$i]=$resourceUsage['data']['usage']['110556']['2018'][5][$days[0]][$i][15];}}``我不会担心让这个for循环变小,因为我会担心用一种合理的方式来存储这些变量。
$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];
  ...