PHP获取表单并使用数组存储 疯狂提示 Notice: Undefined offset

 1    $answer=array();
 2     $answer[0]=‘0‘;
 3     for($i=1;$i<=$QUESTION_COUNT;$i++){
 4         $answer[$i]=$_POST[(string)$i];  //报错的第18行
 5         if($i<=($CHOOSE_COUNT+$FILL_COUNT)){
 6             if($answer[$i]==$right_answer[$i-1]){
 7                 $grade=$grade+5;
 8                 $right_count++;
 9             }else{
 10                 $wrong_count++;
 11             }
 12         }
 13     }//for

二话不说,先上报错部分代码!

运行后如下提示:

Notice: Undefined offset: 1 in E:\wwwroot\center.php on line 18
Notice: Undefined offset: 2 in E:\wwwroot\center.php on line 18
Notice: Undefined offset: 3 in E:\wwwroot\center.php on line 18
Notice: Undefined offset: 4 in E:\wwwroot\center.php on line 18
Notice: Undefined offset: 5 in E:\wwwroot\center.php on line 18

原因:

刚开始一出现在网上也查了,很多人都是让你去修改php.ini,让它不显示,我觉得这不是自欺欺人么(虽然可行简单粗暴),为什么不去寻找出现原因去改变自己的代码。

错误原因:前端HTML提交表单时各个输入空着不填导致报错,使得  $_POST[(string)$i] 赋值给数组时并且去使用数组是出现的未定义现象(简单来说就是后端没有判断前端表单项是否填写了,如radio没选择)。

解决:

先上代码

 1      $answer=array();
 2       $answer[0]=‘0‘;
 3       for($i=1;$i<=$QUESTION_COUNT;$i++){
 4           if(!isset($_POST[(string)$i])){//先判断是否定义
 5               $answer[$i]=‘0‘; //未定义则手动赋值
 6           }else{//定义了则直接赋值
 7              $answer[$i]=$_POST[(string)$i];
 8           if($i<=($CHOOSE_COUNT+$FILL_COUNT)){
 9               if($answer[$i]==$right_answer[$i-1]){
10                   $grade=$grade+5;
11                   $right_count++;
12                }else{
13                   $wrong_count++;
14              }
15          }
16         }
17      }//for

在将前端传来的值用isset()进行检查是否未定义,若未定义则进行手动赋值(我的web应用的情况需要手动赋值),你可以用别的方法反馈给用户。

原文地址:https://www.cnblogs.com/iAmSoScArEd/p/9574324.html

时间: 2024-10-11 09:13:47

PHP获取表单并使用数组存储 疯狂提示 Notice: Undefined offset的相关文章

在Action中获取表单提交数据

-----------------siwuxie095 在 Action 中获取表单提交数据 1.之前的 Web 阶段是提交表单到 Servlet,在其中使用 Request 对象 的方法获取数据 2.Struts2 是提交表单到 Action,但 Action 没有 Request 对象,不能 直接使用 Request 对象获取数据 「可以间接使用 Request 对象获取数据」 3.Action 获取表单提交数据主要有三种方式: (1)使用 ActionContext 类 (2)使用 Ser

struts2入门之action获取表单提交数据

action获取表单提交数据,有三种方式: 1.根据ActionContext对象获取: 2.利用ServletActionContext类获取表单数据:(其实就是可以获取HttpServletRequest对象) 3.利用接口注入的方式获取表单数据:实现接口(ServletRequestAware) 其实以上三种方式都是action通过操作域对象来获取数据,和servlet中操作域对象有异曲同工之妙, I.通过ActionContext类获取表单提交数据,代码如下: 1 public clas

获取表单提交的数据getParameter()方法

请求对象:request public String getParameter(String name); 通过request的getParameter(String name)方法获取 表单里面的name信息 示列: HTML代码 <input type="text" name="userName"> Jsp代码 Sring userName=equest.getParameter("userName"); request 存储的数

Servlet之doPost获取表单参数

/** * 获取表单参数 */ private void readForm() { // TODO Auto-generated method stub Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String parameterName = (String) e.nextElement(); String parameterValue= request.getParameter(param

request获取表单

今天学习了一个获取提交表单数据的新方法request.getParameterMap. 在此之前,获取表单数据时总是用request.getParameter("name"),根据表单中的name值获取value值,需要获取几项就得重复写几次getParameter,而request.getParameterMap方法则不同,不需要参数返回结果为Map<String,String[]>     将提交的form表单中的所有的项以id为key值,以value组成的String

控制表单控件-获取表单内文本框的个数

代码: ———————————————————— <script type="text/javascript">            //获取表单内文本框的个数            function getInputCount(){                var f = document.forms[0];            //获取表单DOM                var elements = f.elements;        //获取所有的控

用jQuery获取表单的值

在日常开发过程中,有许多用到表单的地方.比如登录,注册,比如支付,填写订单,比如后台管理等等. 使用jQuery来获取表单的值是比较常见的做法. 常见表单 单行文字域:<input type='text'> <input type="text" id='name' value='pelli'> 密码域:<input type='password'> <input type="password" id='pass' value

反射=&gt;模型获取表单

效果图: 视图代码: <form action="form.aspx" method="post"> <input type="text" name="card" /><p /> <input type="text" name="pwd" /><p /> <input type="text" name=

jQuery获取表单各元素的值

radio值获取 $("input[type='radio']:checked").val(); 2,设置指定的项为当前选中项 $("input[type='radio']").eq(1).attr("checked",true);//设置第二项为选中项 <input type="text" name="textname" id="text_id" value="&quo