PHP获取表单并使用数组存储 疯狂提示 Notice: Undefined offset
$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的更多相关文章
- PHP获取表单方法
php接收HTML当表单提交的信息,数据将存储提交在全局阵列中,我们能够调用系统特定的自己主动全局变量数组来获取这些值.经常使用的自己主动全局变量例如以下所看到的: $_GET $_POST $_RE ...
- 用jQuery获取表单的值
在日常开发过程中,有许多用到表单的地方.比如登录,注册,比如支付,填写订单,比如后台管理等等. 使用jQuery来获取表单的值是比较常见的做法. 常见表单 单行文字域:<input type=' ...
- 在Action中获取表单提交数据
-----------------siwuxie095 在 Action 中获取表单提交数据 1.之前的 Web 阶段是提交表单到 Servlet,在其中使用 Request 对象 的方法获取数据 2 ...
- 获取表单提交的数据getParameter()方法
请求对象:request public String getParameter(String name); 通过request的getParameter(String name)方法获取 表单里面的n ...
- request.getParameterMap() 获取表单提交的键值对 并且 也能获取动态表单的key
Map<String,String[]> map = request.getParameterMap();Set<String> keys = map.keySet(); 获取 ...
- 1.3(学习笔记)Servlet获取表单数据
一.Servlet获取表单数据 表单提交数据经由Servlet处理,返回一个处理结果显示在页面上, 那么如何获取表单提交的参数进出相应的处理呢? 主要用到以下方法: String getParame ...
- Servlet之doPost获取表单参数
/** * 获取表单参数 */ private void readForm() { // TODO Auto-generated method stub Enumeration e = request ...
- 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储
在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...
- Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据
用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta ...
随机推荐
- 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)
链接:https://ac.nowcoder.com/acm/contest/392/F来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536K ...
- Codeforces Round #512 D - Vasya and Triangle
D - Vasya and Triangle #include<bits/stdc++.h> using namespace std; #define LL long long LL gc ...
- java ee wildfly spring 在线程池的线程中注入
public class RtmpSpyingTests extends AbstractTransactionalJUnit4SpringContextTests { @Autowired Thre ...
- css border 三角形
当元素的宽高都为0时,只写border,就会发现形成的正方形有4个三角形组成. .triangle { width: 0px; height: 0px; border: 20px solid tran ...
- Windows下使用Diskpart格式化U盘
步骤 进入Diskpartdiskpart 列出所有的磁盘list disk 选择磁盘select disk 清楚clean 创建主分区creat partition parimary 激活当前分区a ...
- JQuery未来元素事件监听写法
$(document).on('click','.div1',function(){ alert("abc"); }); 格式一致,第一个参数写事件,第二个参数给谁写事件(选择器) ...
- A1109. Group Photo
Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...
- PostCSS理解与运用
1.PostCSS是什么 它可以被理解为一个平台,可以让一些插件在上面跑 它提供了一个解析器,可以将CSS解析成抽象语法树 通过PostCSS这个平台,我们能够开发一些插件,来处理CSS.热门插件如a ...
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:co
在pom中加入下面代码: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId&g ...
- cookie猜数字游戏(下)------------以及cookie使用的不安全之处
1.通过cookie可以解决上篇中多个用户对数据的修改,每个COOKIE保存不同用户的数据 <?php if(empty($_COOKIE['num'])||empty($_GET['num'] ...