我如何在 for 循环外使用 for 循环范围变量形式?
Posted
技术标签:
【中文标题】我如何在 for 循环外使用 for 循环范围变量形式?【英文标题】:how can i use for loop scope variable form outside for loop? 【发布时间】:2014-08-05 12:08:39 【问题描述】:我遇到以下代码的问题。
<?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。
请帮我提供一些建议,以便在循环范围之外使用这些变量。
【问题讨论】:
我没有使用过这样的结构,因为我认为使用它们是不好的做法。但不应该是$"ans".$a
而不是$ans$a
在你的循环中,你的意思是写:$'ans' . $a
?也就是说动态创建一个变量,比如$ans1
?
是的,我想要它。这是变量动态创建$ans1。我会试试你的建议。
【参考方案1】:
您的代码的问题是$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"];
但正如我在评论中所写,我认为应该避免这种编写代码的方式。
【讨论】:
抱歉,这段代码也出现了同样的问题。现在还说。注意:未定义的变量:第 65 行 F:\xampp\htdocs\oes\Student\result_process.php 中的 ans3 我想使用 ans3 变量。如果我使用这样的变量 $"ans" ,它会起作用。 $a 而不是 $ans[$a] @Sifat080 如果您可以访问$ans1
,但$ans3
将导致Notice: Undefined variable: ans3
,则$question_count
小于3
。你想对it work if i use such like this variable $"ans" . $a instead of $ans[$a]
说什么?【参考方案2】:
可能的变量 $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'];
?>
【讨论】:
即使$question_count
永远不会是 0
,$ans1
也永远不会使用 OP 给出的代码设置,因为 $ans$a
等于 $ans[$a]
。以上是关于我如何在 for 循环外使用 for 循环范围变量形式?的主要内容,如果未能解决你的问题,请参考以下文章