$answer=array();
$answer[0]='0';
for($i=1;$i<=$QUESTION_COUNT;$i++){
$answer[$i]=$_POST[(string)$i]; //报错的第18行
if($i<=($CHOOSE_COUNT+$FILL_COUNT)){
if($answer[$i]==$right_answer[$i-1]){
$grade=$grade+5;
$right_count++;
}else{
$wrong_count++;
}
}
}//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没选择)。

解决:

先上代码

      $answer=array();
$answer[0]='0';
for($i=1;$i<=$QUESTION_COUNT;$i++){
if(!isset($_POST[(string)$i])){//先判断是否定义
$answer[$i]='0'; //未定义则手动赋值
}else{//定义了则直接赋值
$answer[$i]=$_POST[(string)$i];
if($i<=($CHOOSE_COUNT+$FILL_COUNT)){
if($answer[$i]==$right_answer[$i-1]){
$grade=$grade+5;
$right_count++;
}else{
$wrong_count++;
}
}
}
}//for

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

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

  1. PHP获取表单方法

    php接收HTML当表单提交的信息,数据将存储提交在全局阵列中,我们能够调用系统特定的自己主动全局变量数组来获取这些值.经常使用的自己主动全局变量例如以下所看到的: $_GET $_POST $_RE ...

  2. 用jQuery获取表单的值

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

  3. 在Action中获取表单提交数据

    -----------------siwuxie095 在 Action 中获取表单提交数据 1.之前的 Web 阶段是提交表单到 Servlet,在其中使用 Request 对象 的方法获取数据 2 ...

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

    请求对象:request public String getParameter(String name); 通过request的getParameter(String name)方法获取 表单里面的n ...

  5. request.getParameterMap() 获取表单提交的键值对 并且 也能获取动态表单的key

    Map<String,String[]> map = request.getParameterMap();Set<String> keys = map.keySet(); 获取 ...

  6. 1.3(学习笔记)Servlet获取表单数据

    一.Servlet获取表单数据 表单提交数据经由Servlet处理,返回一个处理结果显示在页面上, 那么如何获取表单提交的参数进出相应的处理呢? 主要用到以下方法: String  getParame ...

  7. Servlet之doPost获取表单参数

    /** * 获取表单参数 */ private void readForm() { // TODO Auto-generated method stub Enumeration e = request ...

  8. 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储

    在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...

  9. Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据

    用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta ...

随机推荐

  1. htmlunit 导致高cup占用,一老内存溢出的解决办法

    原文:http://blog.csdn.net/qq_28384353/article/details/52974432#reply 将爬虫部署到服务器上运行后,在查看服务器的状态监控时发现,天猫爬虫 ...

  2. java 遍历方法 及 数组,ArrayList,HashMap,HashSet的遍历

    一,遍历方法的实现原理 1.传统的for循环遍历,基于计数器的: 遍历者自己在集合外部维护一个计数器,然后依次读取每一个位置的元素,当读取到最后一个元素后,停止.主要就是需要按元素的位置来读取元素. ...

  3. A1004. Counting Leaves

    A family hierarchy is usually presented by a pedigree tree. Your job is to count those family member ...

  4. 第三篇-以LinearLayout进行Android界面设计

    一.新建一个项目 选择empty activity,此时项目里面没有main.java的文件. 二.手动创建java文件 Project那儿选择android模式,在app/java/com....一 ...

  5. Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)

      在上一篇博客中,实现了Java中二叉树的四种遍历方式的递归实现,接下来,在此实现Java中非递归实现二叉树的前序.中序.后序.层序遍历,在非递归实现中,借助了栈来帮助实现遍历.前序和中序比较类似, ...

  6. TODO java-web相关 servlet过滤器+监听器

    servlet过滤器 定义: 过滤器是小型的web组件,它负责拦截请求和响应,以便查看.提供或以某种方式操作正在客户机和服务器之间交换的数据. 与过滤器相关的servlet共包含3个简单接口:Filt ...

  7. POJ 1979 Heavy Transportation (kruskal)

    Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K Total Submissions:46898   Accepted: 1 ...

  8. Error:Failed to resolve: :Base:

    这个问题是变通了一下,原来是: //implementation(name: "Base", ext: "aar") 修改成: implementation f ...

  9. 新建体(2):create or replace object创建存储包、存储过程、函数

    http://heisetoufa.iteye.com/blog/366957/ 创建一个package(包) 声明: create or replace package mpay_route is ...

  10. 将 数据库中的结果集转换为json格式(三)

    从数据库中得到结果集 public String list() throws Exception { Connection con = null; PageBean pageBean = new Pa ...