PHP: 我如何正确评估循环中的嵌套变量变量?

PHP: how do i properly evaluate a nested variable variable in a loop?

好的。这是基础知识:

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 当我尝试这个时爆炸。我需要变量变量的值。而且它甚至不是真正的 "variable variable" 因为没有真正的引用正在进行;不是想误导,我只是不知道还能怎么称呼它...

如果有更好的方法,请务必赐教! :P

TIA。 WR!

你的输出循环中的语法不太正确,它与赋值循环基本相同。并且您确实需要使用与循环变量相同的名称(j,而不是k):

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

输出:

stuff foo stuff foo

Demo on 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