PHP: как правильно оценить переменную вложенной переменной в цикле?

Ok. вот основы:

for ($k=1;$k<3;$k++) {
  ${'var'.$k} = 'foo'
} // so far so good

for ($j=1;$J<3;$j++) {    
  $dbq .= "stuff {$var{$k}} ";
} // problem here ^^  ^^

я ищу $dbq для рендеринга в " stuff foo stuff foo ". но я не уверен, как это сделать. я могу установить переменную в цикле без проблем, но я не знаю, как правильно оценить ее в цикле. PHP взрывается, когда я пытаюсь это сделать. Мне нужны ЗНАЧЕНИЯ переменной переменной. и это даже не настоящая «переменная переменная», поскольку здесь нет реальной ссылки; не пытаясь ввести в заблуждение, я просто не знаю, как еще это назвать ...

и если есть лучший способ сделать это, то непременно просветите меня!

ТИА. WR!

Всего 2 ответа


У вас нет правильного синтаксиса в выходном цикле, он в основном совпадает с циклом присваивания. И вам нужно использовать то же имя, что и переменная цикла ( j , а не k ):

$dbq = ''
for ($j=1;$j<3;$j++) {    
  $dbq .= "stuff ${"var$j"} ";
}
echo $dbq;

Выход:

stuff foo stuff foo

Демо на 3v4l.org

В конечном счете, лучшее решение для этого - массив:

for ($k=1;$k<3;$k++) {
  $var[$k] = 'foo'
} // so far so good

$dbq = ''
for ($j=1;$j<3;$j++) {    
  $dbq .= "stuff {$var[$j]} ";
}
echo $dbq;

2 вопроса: -

for ($j=1; $j<3; $j++) { //capital J needs to be small j

И измените код конкатенации, как показано ниже:

$dbq .= "stuff ${'var'.$j} "

Вывод: - https://3v4l.org/Q6arM

Лучший подход - использовать массив:

<?php

$var=[];
for ($k=1;$k<3;$k++) {
  $var[$k] = 'foo'
}

$dbq = '' //define variable first
for ($j=1;$j<3;$j++) {
  $dbq .= "stuff $var[$j] "; //check syntax change
} 

echo $dbq;

Вывод: https://3v4l.org/kmlNX

Еще более простой способ:

<?php

$var= array_fill(1,2,'foo');
$dbq = ''

foreach($var as $v){

    $dbq .= "stuff $v ";
}
echo $dbq;

Вывод: https://3v4l.org/n8Yct


Есть идеи?

10000