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

问题描述 投票:1回答:2

好。这是基本知识:

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爆炸。我需要变量变量的值。它甚至不是真正的“变量”,因为没有真正的引用。不要试图误导,我只是不知道该怎么称呼...

并且如果有更好的方法可以做到这一点,那么请一定启发我! :P

TIA。 WR!

php variables evaluate
2个回答
1
投票

您的输出循环中的语法不正确,基本上与赋值循环相同。而且您确实需要使用与循环变量相同的名称(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;

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.