2013-07-25 251 views
0

您好我有以下几点:PHP变量中For循环

$q1 = $_POST["q2"]; 
$q2 = $_POST["q2"]; 
$q2 = $_POST["q2"]; 

我想什么做的就是把这个For循环中,如下所示:

for ($i=1; $i<=3; $i++){ 
    $q1 = $_POST["q".$i.""]; 
} 

我可以添加变量的POST部分没有问题,但我不能工作如何有旁$ q作为变量的1

$q1 = $_POST["q".$i.""]; 

我确定它很简单,但我无法理解它!

+0

这应该工作'$ _ POST' – 2013-07-25 10:22:34

回答

1

试试这个

$q_arr = array(); //create empty array 
for ($i=1; $i<=3; $i++){ 
    if(isset($_POST["q".$i])) //first check existance of $_POST item with wanted key 
    $q_arr['q'.$i] = $_POST["q".$i]; //store it in array 

} 
extract($q_arr); //extract creates variables naming them as their key 
if(isset($q1)) //just for test 
echo $q1; //just for test 
+0

完美 - 谢谢。 –

1

你的意思是这样的:

// As array: 
$q[ $i ] = $_POST['q'.$i]; // this one is my prefered 

// Or as object: 
$q->$i = $_POST['q'.$i]; 

编辑:删除的eval()版本,你根本不应该使用。阵列一应该工作得很好:)

你cán使用变量变量,但你不应该。它非常快速地变得非常复杂。

$name1 = 'myName'; 
$example = "name".$i; 
echo $$example; 
+0

[ “Q” $ I]这没有用。 '$ A = 'A'; $ B = 'B'; echo $ a。$ b;'会用点连接到'ab'。我删除了这个例子,这是不好的做法:) – Martijn

+0

邑,我得到了解释:) –

1

检查php here中提供的'变量变量'功能。 您的代码将与此类似:

$varName = 'q' . $i; 
$$varName = $_POST[$varName] 

此外,检查出的extract function

+2

这将工作,但它只是*感觉*错误这样做,除非你被迫不使用数组出于某种原因。 +1为有效的答案,但我不同意。 –

+1

我同意你的观点,变量变量永远不会安全 –

+0

谢谢,但希望避免使用变量如果poss。 –

0

将定义你$ Q变量作为一个数组的帮助?

$q[i] = $_POST["q".$i.""]; 
0

你是说你想动态创建变量名? 这样的:

for ($i=1; $i<=3; $i++){ 
    $varname = "q" . $i; 
    $$varname = $_POST["q".$i.""]; 
} 
print $q2; 
1
for ($i=1; $i<=3; $i++){ 
    ${"q$i"} = $_POST["q$i"]; 
} 
echo $q1; 

使用变量变量可以轻松地分配$ Q1