2013-07-25 3 views
0

Привет У меня есть следующие:PHP переменной в цикл по

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

То, что я хотел бы сделать, это положить это в For петли следующим образом:

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

Я могу добавить переменную в POST части проблем нет, но я не могу работать, как иметь 1 рядом с $ д в качестве переменной:

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

Я уверен, что это просто, но я не могу понять!

+0

это должно работать '$ _POST' –

ответ

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

Perfect - спасибо. –

1

ли вы имеете в виду это:

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

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

редактировать: убрана версию Eval(), Вы просто не должны использовать. Массив должен работать просто отлично :)

Вы используете переменные переменные, но не должны. Это очень сложно.

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

[ "д" $ я.] Это не сработало. '$ А = 'а'; $ Ь = 'Ь'; echo $ a. $ b; 'будет concat для 'ab' с точкой. Я удалил этот пример, это была плохая практика :) – Martijn

+0

Yap, я получил объяснение :) –

1

Проверьте функцию 'переменные переменные' доступны в PHP here. Ваш код будет похож на это:

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

Кроме того, проверьте extract function

+2

Это сработает, но это просто * кажется * неправильно делать это таким образом, если вы по какой-то причине не вынуждены использовать массив. +1 для действительного ответа, хотя я не согласен с ним. –

+1

Я согласен с вами, переменные переменные никогда не являются безопасными –

+0

Спасибо, но мне хотелось избежать использования переменных переменных, если возможно. –

0

будет определяющим ваш $ д переменные в качестве помощи массива?

$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