大括号内可变

时间:2013-07-25 11:43:14

标签: php

我知道如何在引号

中执行php变量
$q1 = 1;
$q2 = 2;
$q3 = 3;
$q4 = 4;
$q5 = 5;

echo "${q1}"; //outputs 1

如何在循环中输出它们?

for($i=1; $i<=5; $i++)
{
    echo "${q$i}"; //how to make $i work here?
}

如何让$i$q一起工作?

更新

我希望引号存在,因为我在循环中创建一个字符串,我想将该循环传递给mysql查询。所以我希望字符串像

$str = '$q1, $q2, $q3';

当我将它传递给mysql查询时,它应该解释$ q1,$ q2,$ q3的值,即1,2,3

mysql_query("INSERT INTO users (col1, col2, col3) VALUES ($str)"); 

所以它应该成为

mysql_query("INSERT INTO users (col1, col2, col3) VALUES (1,2,3)");

这只是一个例子,我知道mysql_query的语法错误,但你知道

5 个答案:

答案 0 :(得分:2)

我认为你在寻找的是:

<?php

$arr = array();

$q1 = 1;
$q2 = 2;
$q3 = 3;
$q4 = 4;
$q5 = 5;

for($i=1; $i<=5; $i++)
{
    $arr[] = ${"q".$i}; 
}

$str = implode($arr, ',');

print_r($str);

输出:

1,2,3,4,5

行动中:http://codepad.org/ep7sraT5

答案 1 :(得分:0)

for($i=1; $i<=5; $i++)
{
    echo ${"q".$i};
}

输出:

12345

键盘:http://codepad.org/2PIshh41

<强>更新

由于您希望将值存储在varible中,因此可以执行以下操作:

$str = '';
for($i=1; $i<=5; $i++)
{
    $str .= "${"q".$i}, "; 
}
$str = rtrim($str, ' ,'); //trim last comma

mysql_query("INSERT INTO users (col1, col2, col3) VALUES ($str)"); 

//becomes mysql_query("INSERT INTO users (col1, col2, col3) VALUES (1, 2, 3, 4, 5)")

希望这有帮助!

答案 2 :(得分:0)

for($i=1; $i<=5; $i++)
{
    $x = "q$i";
    echo $$x;
}

works!

答案 3 :(得分:0)

使用此代码,它应该工作:)

echo ${"q${i}"};

答案 4 :(得分:0)

围绕整个事情的双引号是无用的

使用

echo ${'q' . $i};

编辑:如果你想创建逗号分隔字符串,为什么不试试

$q1 = 1;
$q2 = 2;
$q3 = 3;
$q4 = 4;
$q5 = 5;

$parts = array();
for($i=1; $i<=5; $i++)
{
    $parts[] = ${'q' . $i};
}

$str = implode(', ', $parts);

另外考虑在运行MYSQL之前转义值,您可以在for循环中执行此操作,然后将值添加到$parts数组