PHP中foreach输出值不正确
需要达成在一个页面a.html输入成绩或是学号传递给另一个php文件b.php查询对应的学号或是成绩。从一个网页向该文件传递学生学号stuNum,成绩grade,隐藏表单...
需要达成在一个页面a.html输入成绩或是学号传递给另一个php文件b.php查询对应的学号或是成绩。
从一个网页向该文件传递学生学号stuNum,成绩grade,隐藏表单的标记flag
b.php代码如下:
<?php
$grade=array(23,45,65,87,95,45,32,84,54,68);
$flag=$_REQUEST['act'];
$searchFlag=0;
$result=array();
if($flag=="searchNum")
{
$num=$_REQUEST['stuNum'];
foreach($grade as $key=>$value)
{
if($num==$key)
{
$searchFlag=1;
$result=$value;
}
}
}else
{
$num=$_REQUEST['grade'];
foreach($grade as $key=>$value)
{
if($num==$value)
{
$searchFlag=2;
$result[]=$key;
}
}
}
if($searchFlag==0)
{
echo "无此对象";
}else if($searchFlag==1)
{
echo "学号为"."$num"."的学生成绩是:"."$result";
}else
{
echo "成绩为"."$num"."的学生学号是:";
var_dump($result);
foreach($result as $key=>$vaule)
{
echo "$key"." ";
}
}
?>
通过成绩查找学号的时候,输入45,有对应的两个学号,用数组保存,通过var_dump显示是正确的,Array ( [0] => 1 [1] => 5 )
但是通过下面的foreach遍历,$key值是0,1没问题,但是$value却是68,68。
求教。 展开
从一个网页向该文件传递学生学号stuNum,成绩grade,隐藏表单的标记flag
b.php代码如下:
<?php
$grade=array(23,45,65,87,95,45,32,84,54,68);
$flag=$_REQUEST['act'];
$searchFlag=0;
$result=array();
if($flag=="searchNum")
{
$num=$_REQUEST['stuNum'];
foreach($grade as $key=>$value)
{
if($num==$key)
{
$searchFlag=1;
$result=$value;
}
}
}else
{
$num=$_REQUEST['grade'];
foreach($grade as $key=>$value)
{
if($num==$value)
{
$searchFlag=2;
$result[]=$key;
}
}
}
if($searchFlag==0)
{
echo "无此对象";
}else if($searchFlag==1)
{
echo "学号为"."$num"."的学生成绩是:"."$result";
}else
{
echo "成绩为"."$num"."的学生学号是:";
var_dump($result);
foreach($result as $key=>$vaule)
{
echo "$key"." ";
}
}
?>
通过成绩查找学号的时候,输入45,有对应的两个学号,用数组保存,通过var_dump显示是正确的,Array ( [0] => 1 [1] => 5 )
但是通过下面的foreach遍历,$key值是0,1没问题,但是$value却是68,68。
求教。 展开
3个回答
展开全部
不难看出68刚好是$grade的最后一个元素,
在循环
foreach($grade as $key=>$value)
{
if($num==$value)
{
$searchFlag=2;
$result[]=$key;
}
}
循环到最后 $value =68;
你说执行到
foreach($result as $key=>$vaule)
{
echo "$key"." ";
}
的时候,输出的是68; 应该是你输出的$vaule 写错, 因为你echo "$key"." "; 没有写明确,
最简单的处理方法就是
foreach($result as $key=>$val)
{
echo "$key"." ".$val;
}
这样肯定$val不会是68了
在循环
foreach($grade as $key=>$value)
{
if($num==$value)
{
$searchFlag=2;
$result[]=$key;
}
}
循环到最后 $value =68;
你说执行到
foreach($result as $key=>$vaule)
{
echo "$key"." ";
}
的时候,输出的是68; 应该是你输出的$vaule 写错, 因为你echo "$key"." "; 没有写明确,
最简单的处理方法就是
foreach($result as $key=>$val)
{
echo "$key"." ".$val;
}
这样肯定$val不会是68了
追问
这段代码里面我用foreach输出$key,但如果将其换成$value,输出的就是68,68,搞不清楚为什么会出现这样的情况,var_dump输出是对的,用foreach输出就会出错
2015-08-05
展开全部
既然var_dump是正确的,foreach应该不会出错啊,而且看到foreach你没有输出value啊……
追问
只是这段代码里面我用foreach输出$key,但如果将其换成$value,输出的就是68,68
追答
怀疑是其他的地方的输出,你这里写成特别的输出试试:
var_dump($result);
foreach($result as $k=>$v)
{
echo "<br/>-----".$k." : ". $v ." ------";
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
感觉问题不是很明白
追问
就是我用foreach在循环中查找$grade=array(23,45,65,87,95,45,32,84,54,68);这个数组时如果查找对应成绩为45的编号应该有两个一个是1一个是5.但是在使用foreach对存储该结果的数组输出$key为0,1;输出$value为68,68.按理来说$value应该是1 ,5 才对。就是不明白这一点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询