我遇到有关以下代码的问题。
<?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说:
注意:未定义的变量:第25行的F:\ xampp \ htdocs \ oes \ Student \ result_process.php中的ans1。
请帮我提一些建议,在循环范围外使用这些变量。
答案 0 :(得分:0)
可能的变量$ 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'];
?>
答案 1 :(得分:0)
您的代码存在的问题是$ans{$a}
等于$ans[$a]
(PHP curly braces in array notation)
所以你的循环就是这样:
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++ ){
${"ans" . $a} = $_POST["ans$a"];
${"subject_id" . $a} = $_POST["sub_id$a"];
${"group_id" . $a} = $_POST["grup_id$a"];
}
但正如我在评论中所写,我认为应该避免使用这种编写代码的方式。