例如:
$Q1 = "hello";
$Q2 = "world";
$Q3 = "StackOverflow";
$i = 1;
while($i < 3) {
$a = "$Q".$i; //I think this is wrong.
echo $a; // i tried ${$a} doesn't work =/
$i++;
}
然后输出格式:
$Q1
$Q2
$Q3
但是没有这样的输出: 你好 世界 StackOverflow的
我希望$Q + $i
成为$Q1
来回答:“你好”......
答案 0 :(得分:9)
$varName = 'Q'.$i;
$a .= $$varName;
或者只是
echo $$varName . "<br>\n";
答案 1 :(得分:3)
要创建变量变量,请使用:
$a = ${'Q'.$i};
答案 2 :(得分:1)
echo $Q1 . $Q2 . $Q3;
将输出您要查找的内容。
或者,你可以这样做:
$a = '';
for($i = 1; $i <= 3; $i++)
$a .= ${'Q' . $i};
echo $a;
答案 3 :(得分:1)
你在做什么只是打印字符串'$ Q1','$ Q2'和'$ Q3'。在PHP中,您可以通过以下方式使用动态变量名称:
<?php
$Q1 = 'hello';
$Q2 = 'world';
$Q3 = 'StackOverflow';
for ($i = 1; $i <= 3; $i++) {
echo ${'Q' . $i};
}
?>
答案 4 :(得分:1)
PHP确实支持使用$$
表示的变量变量名称。这将做你想要的。
$qvar = 'Q'.$i;
$a = $$qvar;
然而,这被认为是非常糟糕的做法 - 几乎和使用eval()
一样糟糕(并且出于类似的原因)。
正确的答案是创建一个$Q
数组,并引用数组元素;
$Q = array(
"hello",
"world",
"StackOverflow")
$a = $Q[0] . $Q[1] . $Q[2];
答案 5 :(得分:0)
呀。当你有双引号字符串,并在其中放入一个美元符号和其他内容时,它会将其解释为变量。 (它也逃避\n
)
实施例
$test = "hi";
echo "$test world"; //This outputs hi world
在您的情况下,$Q
不存在。默认的PHP行为是忽略该错误并且什么也不做。这就是为什么建议您报告代码的所有问题。查看
http://php.net/manual/en/function.error-reporting.php了解详情。
问题的解决方案是使用单引号字符串。做$a = '$Q'.$i;
答案 6 :(得分:0)
$Q = array("hello", "world", "StackOverflow");
foreach($Q as $w) {
echo $w;
}
如果您不能做这样的事情,那么您将需要使用动态变量:
$var = 'Q' . $i;
echo $var;