PHP: как правильно оценить вложенную переменную в al oop? - PullRequest
1 голос
/ 04 февраля 2020

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

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". но я не уверен, как это сделать. я могу установить переменную в al oop без проблем, но я не знаю, как правильно вычислить ее в al oop. PHP взрывается, когда я пытаюсь это сделать. Мне нужны ЗНАЧЕНИЯ переменной переменной. и это даже не настоящая «переменная переменная», поскольку здесь нет реальной ссылки; не пытаясь ввести в заблуждение, я просто не знаю, как еще это назвать ...

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

TIA. WR!

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

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

2 голосов
/ 04 февраля 2020

Синтаксис в выводе l oop не совсем правильный, он в основном совпадает с присваиванием l oop. И вам нужно использовать то же имя, что и переменная l oop (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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...