我遇到一个关于以下代码的问题。
<?php
$sql="SELECT * FROM `question` WHERE sub_id=$subject_id";
$query=mysql_query($sql);
$question_count=mysql_num_rows($query);
for($a=1;$a<=$question_count;$a++){
$ans{$a}=$_POST["ans$a"];
$subject_id{$a}=$_POST["sub_id$a"];
$group_id{$a}=$_POST["grup_id$a"];
}
?>
我想在for循环外使用$ans{$a}
, $subject_id{$a}
, $subject_id{$a}
等变量。如果我使用下面的代码,
<?php
$sql="SELECT * FROM `question` WHERE sub_id=$subject_id";
$query=mysql_query($sql);
$question_count=mysql_num_rows($query);
for($a=1;$a<=$question_count;$a++){
$ans{$a}=$_POST["ans$a"];
$subject_id{$a}=$_POST["sub_id$a"];
$group_id{$a}=$_POST["grup_id$a"];
}
echo $ans1;
echo $subject_id1;
?>
php说:
注意:未定义变量:ans1在F:xampphtdocsoesStudentresult_process.php第25行。
请帮助我给出一些建议,以使用这些变量之外的循环作用域。
您的代码的问题是$ans{$a}
等于$ans[$a]
(PHP花括号在数组符号)
那么你的循环会这样做:
for($a=1;$a<=$question_count;$a++){
$ans[$a]=$_POST["ans$a"];
$subject_id[$a]=$_POST["sub_id$a"];
$group_id[$a]=$_POST["grup_id$a"];
}
这就是为什么没有定义$ans1
。如果你写echo $ans[1]
,你会得到结果。
如果你真的想要一个名为$ans1
的变量,你需要这样写:
for( $a = 1 ; $a <= $question_count ; $a++ ){
${"one_answers" . $a} = $_POST["ans$a"];
${"subject_id" . $a} = $_POST["sub_id$a"];
${"group_id" . $a} = $_POST["grup_id$a"];
}
但是正如我在评论中所写的那样,我认为应该避免这种编写代码的方式
变量$question_count可能为0。否则尝试使用数组:
<?php
$sql="SELECT * FROM `question` WHERE sub_id=$subject_id";
$query=mysql_query($sql);
$question_count=mysql_num_rows($query);
$items = array();
for($a=1;$a<=$question_count;$a++){
$items[$a] = array(
'ans' => $_POST["ans$a"],
'subject_id' => $_POST["sub_id$a"],
'group_id' => $_POST["grup_id$a"]
);
}
echo $items[1]['ans'];
echo $items[1]['subject_id'];
?>