在while循环中组合PHP变量

时间:2016-12-21 20:08:24

标签: php variables

不确定标题是否是正确的标题,但我不知道如何调用我想要完成的内容。表面上看起来很简单......

我写了以下代码:

$var1 = "55";
$var2 = "66";
$var3 = "22";
$var4 = "22";
$x = 1;
$result = "null";

while($x < 5) {
$result = "$" . "var" . "$x";
echo $result;
echo " | ";
$x = $x +1;
}

希望得到: 55 | 66 | 22 | 22

相反,我得到: $ var1 | $ var2 | $ var3 | $ var4 |

我尝试过很多东西,但无法找到合适的解决方案,任何帮助都会得到很多帮助。

谢谢

3 个答案:

答案 0 :(得分:5)

请在此处查看此声明,

$result = "$" . "var" . "$x";

$result变量实际上是一个字符串。要获得它的价值,请使用variable variables。此外,根据您的方法,您最终会获得额外的|。因此,要获得所需的结果,请按以下方式更改while()循环,

while (true) { 
    $result = "var" . $x; 
    echo $$result;
    if($x++ == 4) break;
    echo " | ";
}

这里是demo

此外,请查看 @freginold 的解决方案,我稍作修改以满足您的需求。使用$x初始化5并按以下方式更改while()循环,

$output = "";
while (--$x) { 
    $result = "var" . $x; 
    $output = $$result . " | " . $output; 
}
echo rtrim($output, " | "); 

在此解决方案中,当您离开循环时,您最终会在结尾处获得额外的|,您需要使用rtrim()函数进行修剪。

这里是demo

答案 1 :(得分:1)

没有while循环的另一种解决方案:

$var1 = "55";
$var2 = "66";
$var3 = "22";
$var4 = "22";

$vars = array($var1, $var2, $var3, $var4);
echo implode(' | ', $vars);

答案 2 :(得分:0)

阵列会更好吗?

<?php 

  $vars = array( 
    'var1' => 55, 
    'var2' => 66, 
    'var3' => 22, 
    'var4' => 22
    'x'    => 1
  );

  foreach($vars as $key => $value){
    print $value;
  }

?>