【问题标题】:Merging Variable PHP合并变量 PHP
【发布时间】:2011-09-17 12:03:47
【问题描述】:
我对此感到困惑......
例如:
$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
但没有这样的输出:
你好
世界
堆栈溢出
我想像$Q + $i 变成$Q1 回答是:“你好”...
【问题讨论】:
标签:
php
variables
merge
var
【解决方案1】:
$varName = 'Q'.$i;
$a .= $$varName;
或者只是
echo $$varName . "<br>\n";
【解决方案2】:
要创建变量变量,请使用:
$a = ${'Q'.$i};
【解决方案3】:
echo $Q1 . $Q2 . $Q3; 将输出您要查找的内容。
或者,您可以这样做:
$a = '';
for($i = 1; $i <= 3; $i++)
$a .= ${'Q' . $i};
echo $a;
【解决方案4】:
您在此处所做的只是打印字符串“$Q1”、“$Q2”和“$Q3”。在 PHP 中,您可以通过这种方式使用动态变量名:
<?php
$Q1 = 'hello';
$Q2 = 'world';
$Q3 = 'StackOverflow';
for ($i = 1; $i <= 3; $i++) {
echo ${'Q' . $i};
}
?>
【解决方案5】:
PHP 确实支持变量名,用$$ 表示。这会做你想做的。
$qvar = 'Q'.$i;
$a = $$qvar;
但是,这被认为是非常糟糕的做法——几乎和使用eval() 一样糟糕(并且出于类似的原因)。
正确的答案是创建一个$Q 的数组,并引用数组元素;
$Q = array(
"hello",
"world",
"StackOverflow")
$a = $Q[0] . $Q[1] . $Q[2];
【解决方案6】:
是的。当你有双引号字符串,并且你在其中放了一个美元符号和其他东西时,它会将它解释为一个变量。 (它也逃脱了\n之类的东西)
例子
$test = "hi";
echo "$test world"; //This outputs hi world
在您的情况下,$Q 不存在。默认的 PHP 行为是忽略该错误并且什么也不输出。这就是为什么建议报告您的代码的所有问题的原因。退房
http://php.net/manual/en/function.error-reporting.php了解详情。
您的问题的解决方案是使用单引号字符串。做$a = '$Q'.$i;
【解决方案7】:
$Q = array("hello", "world", "StackOverflow");
foreach($Q as $w) {
echo $w;
}
如果你不能这样做,那么你将需要使用动态变量:
$var = 'Q' . $i;
echo $var;