Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在while循环中组合PHP变量_Php_Variables - Fatal编程技术网

在while循环中组合PHP变量

在while循环中组合PHP变量,php,variables,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; } $var1=“55”; $var2=“66”; $var3

不确定标题是否正确,但我不确定如何称呼我试图实现的目标。表面上看起来很简单

我编写了以下代码:

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

while($x < 5) {
$result = "$" . "var" . "$x";
echo $result;
echo " | ";
$x = $x +1;
}
$var1=“55”;
$var2=“66”;
$var3=“22”;
$var4=“22”;
$x=1;
$result=“null”;
而($x<5){
$result=“$”变量“$x”;
回声$结果;
回声“|”;
$x=$x+1;
}
希望得到: 55 | 66 | 22 | 22

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

我尝试了很多方法,但都找不到有效的解决方案,任何帮助都会很难找到


谢谢

请看这里的声明

$result = "$" . "var" . "$x";
$result
变量实际上是一个字符串。要获得它的价值,请使用。此外,通过您的方法,最终您将获得额外的
|
。因此,为了获得所需的结果,请按以下方式更改
while()
循环

while (true) { 
    $result = "var" . $x; 
    echo $$result;
    if($x++ == 4) break;
    echo " | ";
}
$output = "";
while (--$x) { 
    $result = "var" . $x; 
    $output = $$result . " | " . $output; 
}
echo rtrim($output, " | "); 
这里有一个


此外,请务必研究@freginold的解决方案,我对其进行了一些修改,以满足您的需要。使用
5
初始化
$x
,并按以下方式更改
while()
循环

while (true) { 
    $result = "var" . $x; 
    echo $$result;
    if($x++ == 4) break;
    echo " | ";
}
$output = "";
while (--$x) { 
    $result = "var" . $x; 
    $output = $$result . " | " . $output; 
}
echo rtrim($output, " | "); 
在这个解决方案中,当退出循环时,最终会得到一个额外的
|
,需要使用函数对其进行修剪


这里有一个

请看这里的声明

$result = "$" . "var" . "$x";
$result
变量实际上是一个字符串。要获得它的价值,请使用。此外,通过您的方法,最终您将获得额外的
|
。因此,为了获得所需的结果,请按以下方式更改
while()
循环

while (true) { 
    $result = "var" . $x; 
    echo $$result;
    if($x++ == 4) break;
    echo " | ";
}
$output = "";
while (--$x) { 
    $result = "var" . $x; 
    $output = $$result . " | " . $output; 
}
echo rtrim($output, " | "); 
这里有一个


此外,请务必研究@freginold的解决方案,我对其进行了一些修改,以满足您的需要。使用
5
初始化
$x
,并按以下方式更改
while()
循环

while (true) { 
    $result = "var" . $x; 
    echo $$result;
    if($x++ == 4) break;
    echo " | ";
}
$output = "";
while (--$x) { 
    $result = "var" . $x; 
    $output = $$result . " | " . $output; 
}
echo rtrim($output, " | "); 
在这个解决方案中,当退出循环时,最终会得到一个额外的
|
,需要使用函数对其进行修剪


下面是一个

数组是否工作得更好

<?php 

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

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

?>

阵列是否工作得更好

<?php 

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

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

?>

另一个没有
的解决方案,而
循环:

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

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

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

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

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

当您打算将该字符串的值计算为
$var1
时,您正在构建一个名为
$var1
的字符串。我猜您不知道您将预先处理哪些变量名。然而,在未知输入流上使用
eval
是一种不好的方法。如@PeeHaa所说,使用数组并对其进行迭代。数组是一个很好的主意,但在这种情况下,我真的很想找到一种方法使其在没有数组的情况下工作。上面的代码是我尝试执行的操作的简化版本,它包含四个不同的数组。我想发布这个模拟问题的精简代码会更容易。当您打算将该字符串的值计算为
$var1
时,您正在构建一个名为
$var1
的字符串。我猜您不知道您将预先处理哪些变量名。然而,在未知输入流上使用
eval
是一种不好的方法。如@PeeHaa所说,使用数组并对其进行迭代。数组是一个很好的主意,但在这种情况下,我真的很想找到一种方法使其在没有数组的情况下工作。上面的代码是我尝试执行的操作的简化版本,它包含四个不同的数组。我认为发布这个模拟问题的精简代码会更容易。这是目前为止最好的解决方案。您甚至可以通过包含
$output=”“
在初始化中,然后将
while
循环更改为:
while(--$x){$result=“var”。$x”;$output=$$result.|“$output;}
echo$output结尾。@freginold很好的尝试,;-)但是你的代码中有一个缺陷,我现在注意到了。在您的方法中,元素将以相反的顺序打印,因为我们使用
5
初始化
$x
。当然,您还必须更改
$x=1
$x=5它们以相反的顺序处理,但通过将新值添加到输出字符串的开头,以正确的顺序打印:)@freginold,你说得对,我没想清楚。很好的解决方案!我也会在回答中加上它。干杯!:-)这是迄今为止最好的解决方案。您甚至可以通过包含
$output=”“
在初始化中,然后将
while
循环更改为:
while(--$x){$result=“var”。$x”;$output=$$result.|“$output;}
echo$output结尾。@freginold很好的尝试,;-)但是你的代码中有一个缺陷,我现在注意到了。在您的方法中,元素将以相反的顺序打印,因为我们使用
5
初始化
$x
。当然,您还必须更改
$x=1
$x=5它们以相反的顺序处理,但通过将新值添加到输出字符串的开头,以正确的顺序打印:)@freginold,你说得对,我没想清楚。很好的解决方案!我也会在回答中加上它。干杯!:-)