сделать для цикла короче, используя другой для цикла - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь сделать цикл 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 голосов
/ 04 мая 2018

Вы не можете использовать квадратные скобки для адресации "переменных переменных" в 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];
  ...
0 голосов
/ 04 мая 2018

Использовать переменную variable.this это ссылка 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...