合并变量PHP

时间:2011-06-17 20:33:40

标签: php variables merge var

我很困惑......

例如:

$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来回答:“你好”......

7 个答案:

答案 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;