2013-06-14 3 views
0

Мой PHP код является:Validate PHP Expression

$userAnswers = array( // you would get these values via $_POST["answers"] 
     "s1" => array(
      "q1" => $_POST['S1Q1'], 
      "q2" => $_POST['S1Q2'] 
     ), 
     "s2" => array(
       "q1" => $_POST['S2Q1'], 
       "q2" => $_POST['S2Q2'], 
       "q3" => $_POST['S2Q3'], 
       "q4" => $_POST['S2Q4'] 
     ), 
     "s3" => array(
       "q1" => $_POST['S3Q1'], 
       "q2" => $_POST['S3Q2'], 
       "q3" => $_POST['S3Q3'], 
       "q4" => $_POST['S3Q4'], 
       "q5" => $_POST['S3Q5'] 
     ), 
    ); 

    $q001 = $_POST['S1Q1']; 
    $q002 = $_POST['S1Q2']; 
    $q003 = $_POST['S2Q1']; 
    $q004 = $_POST['S2Q2']; 
    $q005 = $_POST['S2Q3']; 
    $q006 = $_POST['S2Q4']; 
    $q007 = $_POST['S3Q1']; 
    $q008 = $_POST['S3Q2']; 
    $q009 = $_POST['S3Q3']; 
    $q010 = $_POST['S3Q4']; 
    $q011 = $_POST['S3Q5']; 

$savearray = array($q001, $q002, $q003, $q004, $q005, $q006, $q007, $q008, $q009, $q010, $q011); 

$_SESSION['annual'] = $savearray; 

Я думаю, что это будет слишком утомительно и отнимает много времени, если у меня есть много вопросов, и я вступаю на пост дважды, и думает о том, как заменить второе появление $_POST[] с чем-то вроде следующего:

$userAnswers[$s][$q] 

Будет ли идти в порядке, начиная с $q001 и вперед? Таким образом, $_POST[] вызывается только один раз.

Так что-то вроде этого:

$q001 = $userAnswers[$s][$q]; 
$q002 = $userAnswers[$s][$q]; 
$q003 = $userAnswers[$s][$q]; 
$q004 = $userAnswers[$s][$q]; 
$q005 = $userAnswers[$s][$q]; 
$q006 = $userAnswers[$s][$q]; 
$q007 = $userAnswers[$s][$q]; 
$q008 = $userAnswers[$s][$q]; 
$q009 = $userAnswers[$s][$q]; 
$q010 = $userAnswers[$s][$q]; 
$q011 = $userAnswers[$s][$q]; 

мышления, я мог бы использовать foreach заявление?

foreach() { } 
+1

Посмотрите «петли» на PHP? – meagar

+1

Будьте осторожны, чтобы принимать только значения POST, которые вы ожидаете, - вы захотите сопоставить их с шаблоном или использовать какой-либо другой метод, чтобы проверить, что это ожидаемый вами вход. В противном случае ваш скрипт может быть уязвим для атак SQL-инъекций. –

+0

Так что-то вроде этого: 'trim (strip_tags (stripslashes ($ _ POST ['S1Q1'])));' Хотя они являются переключателями, все-таки сделайте это правильно? Я не использую SQL, просто отправляю сообщение после сравнения ввода с листом ответа. – Si8

ответ

1

Что-то вроде это работает:

$userAnswers["s1"]["q1"] 

Для цикла:

for ($sNumber = 1; $sNumber <= 2 ; $sNumber+1){ 
    for ($qNumber = 1; $qNumber <= 2 ; $qNumber+1){ 
     $sTemp = "s" + $sNumber; 
     $qTemp = "q" + $qNumber; 
     echo $userAnswers[$sTemp][$qTemp]; 
    } 
} 
+0

Так что мне не нужно использовать foreach? – Si8

+0

Я отредактировал ответ для возможного решения. –

+0

Я думаю, что это путаница, я не пытаюсь показать результат в любом месте. См. Мой обновленный вопрос. – Si8

1

настроить его однако вы ввода/вывода результатов.

<form action="" method="post"> 
<input name="s1[1]" type="text" value=""> 
<input name="s1[]" type="text" value=""> 
<input name="s2[1]" type="text" value=""> 
<input name="s2[]" type="text" value=""> 
<input name="jello" type="submit" value="send"> 
</form> 



<?php   

foreach ($_POST['s1'] as $k=>$v) 
{ 
echo "Qs1 answer $k is $v"; 

} 

foreach ($_POST['s2'] as $k=>$v) 
{ 
echo "Qs2 answers $k is $v"; 

} 
?> 
+0

Я думаю, что это путаница, я не пытаюсь показать результат в любом месте. См. Мой обновленный вопрос. – Si8