PHP数组实验报告
班级:10网工三班 学生姓名:谢昊天 学号:1215134046
实验目的和要求:
掌握PHP的数组声明;
掌握PHP的数组定义;
掌握PHP数组的遍历和排序;
熟练运用数组完成相关的任务。
实验内容:
自己构造一个名字为students的二维数组,每个学号代表一名学生,该学生的信息由“姓名”、“性别”、“成绩”组成,数组中的元素至少具备5条。
然后按照学生的成绩高低对该二维数组进行排序,并在网页中显示排序前后的students数组。
实验步骤与调试过程:
1、启动wamp服务器;
2、注册并打开editplus.exe文件在打开弹出对话窗口选择给定的php程序,程序一定要保存C:\wamp\www 目录下;
3、在editplus中对程序进行编辑添加代码实现功能;
4、编写一个二维数组,然后进行添加数组元素;
5、编写一个函数function array_rsort ($arr,$keys, $type='desc') { // $arr 数组,$keys 所需要进行排序的键值,$type顺序;
6、定义一个变量数组$keysvalue = $new_array = array();
7、使用foreach循环,把二维数组的第一层数组进行赋值给$keysvalue = $new_array;
8、用if语句来判断排列数组类型是升序还是降序;
9、使数组执行第一个元素reset($keysvalue);
10、再用foreach编译$keysvalue数组,并把数组的值赋给$new_array数组,返回$new_array数组;
11、调用函数$stu = array_rsort($student,'grade');并赋值给变量$stu;
12、$students["000001"]=array("学号"=>"000001","姓名"=>"张三","性别"=>"女","成绩"=>60);
$students["000002"]=array("学号"=>"000002","姓名"=>"张四","性别"=>"女","成绩"=>90);
$students["000003"]=array("学号"=>"000003","姓名"=>"张五","性别"=>"男","成绩"=>85);
$students["000004"]=array("学号"=>"000004","姓名"=>"张六","性别"=>"女","成绩"=>78);
$students["000005"]=array("学号"=>"000005","姓名"=>"张七","性别"=>"男","成绩"=>91);
13、最后打印排序后的数组print_r($stu)。
实验结果:
1、按照实验要求顺利创建数组,对二维数组进行了声明,定义了相应的二维数组。
2、对数组进行初始化数据
3、按照成绩高低对二维数组进行排序
4、利用表格对输出数据进行输出
5、通过自定义函数实现排序,和表格输出
实验总结:
通过本次试验,我对PHP流程控制思想有了进一步的了解,通过动手实现PHP数组编程及运行,更加深刻的理解了PHP数组的特点。在做实验的过程中了解了php支持的两种数组类型:索引数组和联合数组,前者使用数字作为键,后者使用字符串作为键。数组的构造一维数组:当一个数组的元素是变量时,则称其为一维数组。声明一位数组: 类型说明符 数组名[常量表达式];二维数组:当一个数组的元素是一个一位数组时,则称之为二维数组。对二维数组排序有了一定的认识。同时,在实验过程中,回顾书本上的理论知识,巩固了我的知识。
主要算法和程序清单:
<html>
<head>
shiyan
</head>
</html>
<?php
$students["000001"]=array("学号"=>"000001","姓名"=>"张三","性别"=>"女","成绩"=>60);
$students["000002"]=array("学号"=>"000002","姓名"=>"张四","性别"=>"女","成绩"=>90);
$students["000003"]=array("学号"=>"000003","姓名"=>"张五","性别"=>"男","成绩"=>85);
$students["000004"]=array("学号"=>"000004","姓名"=>"张六","性别"=>"女","成绩"=>78);
$students["000005"]=array("学号"=>"000005","姓名"=>"张七","性别"=>"男","成绩"=>91);
$students1=array_sort($students,"成绩");
function array_sort($arr,$keys,$type='asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k=>$v){
$keysvalue[$k] = $v[$keys];
}
if($type == 'asc'){
arsort($keysvalue);
}else{
asort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k=>$v){
$new_array[$k] = $arr[$k];
}
return $new_array;
}
print_r($students1);
$data=$students1;
array_table_view($data);
function array_table_view($data)
{
?>
<table width="95%" border="1" cellspacing="0" cellpadding="4"><?php
if(!sizeof($data)){
?>
<tr>
<td>empty array.</td>
</tr><?php
}else{
foreach($data as $item){
?>
<tr><?php
foreach($item as $key => $val){ ?>
<th><?php echo $key; ?></th><?php
} ?>
</tr>
<?php
break;
}
foreach($data as $item){
?>
<tr><?php
foreach($item as $key => $val){ ?>
<td><?php
if(is_array($val)){
array_table_view($val);
}else{
echo $val;
}
?></td><?php
} ?>
</tr>
<?php
}
} ?>
</table>
<?php
}
?>
第二篇:PHP数据采集实验报告
PHP数据采集实验报告
班级:10网工三班 学生姓名:谢昊天 学号:1215134046
实验目的和要求:
1、使学生掌握各种Form表单控件的使用;
2、使学生掌握HTML和PHP之间的数据传递;
3、使学生掌握PHP的文件上传;
4、使学生能够灵活运用表单完成各种数据提交任务。
实验内容:
首先完成一个HTML的表单页面,该页面可以实现学生信息的提交功能。提交的信息包括:学生姓名(手动输入),登录密码、确认密码(两种密码需要对比),学生班级(下列列表选择),学生学号(输入),学生性别(单选框),学生的兴趣爱好(多选),学生的头像(需要用文件上传完成),学生的课程成绩,学生的备注信息以及其他信息(自己指定)。
然后设置两个按钮,一个提交,一个重置。
最后把表单采集的数据提交给后台的PHP服务器进行处理,最终可以在网页上显示用户输入的个人所有信息。
有兴趣的学生可以考虑对每个表单输入域的数据进行数据合法性检测。
实验步骤与调试过程:
1、添加form表单,设置action属性作用是当前表单数据提交的目的地址,method 属性设置表单数据的提交方式,enctype设置表单提交数据的编码方式;
2、新建一个注册信息.html网页文件,在新建一个index.php文件;
3、用文本打开注册信息.html文件,在<bady> </bady>中新建一个表单,使表单的action行为指向index.php文件,并将提交方式设置为post;
4、创建三个文本框,分别是姓名、学号、成绩等,并分别设置他们的控件名字和value值;
5、对于学生的班级,选用下拉框,使用option关键字列出所有的学生班级,列出五个选项,分别为12网工1、12网工2、12网工3、12网工4、12网工5等五个选项;
6、性别选用单选按钮,并将其value值分别设置为male、 female。在提交时分别代表男和女;
7、设置上传框,这里我们为之设置了一个隐藏域,并将其value值设置为5024;
8、对于用户的兴趣爱好我们使用复选框,并将其name命名为一个数组internet[];
9、做一个提交按钮,当用户点击时,程序将用户填写的信息自动提交到后台的PHP服务器,这里我们将type类型设置为submit;
10、当点击提交按钮后PHP程序首先判断用户输入的两个密码是否一致,如不一致就会提示用户输入的密码错误,程序不执行;
11、当密码正确时,判断用户上传的文件的大小,如果上传文件大于规定的大小时,则提示用户上传的文件太大,提交失败,需要修改上传的文件大小;
12、对于爱好,将其付给数组,使用foreach的方法通过遍历得到用户选择的值;
13、把程序放在php服务器安装目录www内文件2下,测试程序。
实验结果:
1、提交表单数据时会在另一个页面显示。
2、当表单控件的应用和表单控件的属性被使用,对密码框的密码隐藏,判断密码输入的是否一致。当用户输入的两个密码不一致时,程序提示密码错误,并终止下面程序的执行。
3、图片文件的上传,保存图片文件。
4、单选框和复选框的应用。
5、如果上传的信息过多时,程序也会提示用户上传的信息过多,提交失败,。
实验总结:
通过本次试验,我对PHP数据采集思想有了进一步的了解,通过动手实现PHP数据采集编程及运行,更加深刻的理解了PHP数据采集的特点。在做实验的过程中学习到了:如果在定义表单时没有将其enctype属性设置为multipart/form-data,将最终导致上传失败。1.每个表单控件name属性设置一个唯一的名字。.单选框复选框,可以初始化默认值。在添加文件上传框,每个文件上传框只能选择一个文件。使用文件上传框时,表单标签form的enctype属性必须设置为multipart/form-data,method属性必须设置为post提交方式。数据采集的时候要判断数据是否超过了php预处理器先判断表单数据大小是否超过了post_max_size选项的配置。如果超出php程序无法得到任何表单数据,预定的$_psot将为空数组。负责将进行检查表单中大小是否超过了表单隐藏域max_file_size参数和php.ini文件中upload_max_filesize选项预定义的大小。在提交图片文件的时候,要在临时文件消失前,需要将临时文件保存到web服务器或文件服务器。对二维PHP的数据采集有了一定的认识。同时,在实验过程中,回顾书本上的理论知识,巩固了我的知识。
主要算法和程序清单:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<?php
$password=$_POST['password'];
$confirmpassword=$_POST['confirmpassword'];
if($password!=$confirmpassword)
exit("密码错误,请重新填写!");
if(empty($_POST))
exit("你提交的信息过多,请重新填写!");
echo "姓名:".$_POST['userName'];
echo "<br/>";
echo "密码:".$_POST['password'];
echo "<br/>";
echo "确认密码:".$_POST['confirmpassword'];
echo "<br/>";
echo "班级:".$_POST['banji'];
echo "<br/>";
echo "学号:".$_POST['xuehao'];
echo "<br/>";
echo "性别:".$_POST['sex'];
echo "<br/>";
echo "个人爱好:";
foreach($_POST['internet'] as $internet)
{
echo $internet."、";
}
echo "<br/>";
$mypicture=$_FILES['mypicture'];
$error=$mypicture['error'];
switch($error)
{
case 0:
echo "上传成功!";
break;
default:
echo "上传失败!";
}
echo "<br/>";
echo "成绩:".$_POST['chengji'];
echo "<br/>";
echo "备注信息:".$_POST['remark'];
?>
</body>
</html>
第三篇:C语言实验报告 数组
C语言实验报告
实验七 数组
1. 实验目的
(1) 熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;
(2) 熟练掌握字符数组和字符串函数的使用;
(3) 掌握与数组有关的常用算法(如查找、排序等)。
2. 实验指导
(1) 对任意一个一维型数组,从中找出数组元素的最大值和最小值并输出。
要求:
① 数组有十个元素;
② 使用scanf函数实现数组元素的输入前给出必要的提示;
③ 输出时,首先输出数组的十个元素,然后输出其最大值和最小值。
分析指导:
① 算法分析:首先定义一个数组,通过循环从键盘输入十个数组元素的值,再通过另一个循环判断数组元素的最大只和最小值;
② 根据分析情况编写程序:
#include<stdio.h>
main()
{
int a[10],i,max,min;
printf("please input ten integers:");
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
max=a[0];
min=a[0];
for(i=1;i<=9;i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
for(i=0;i<=9;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
printf("The maximum value is %d,and the minimum value is %d\n",max,min);
}
运行程序,输入十个整数,如:
21 37 6 17 9 12 89 76 35 59
运行结果如下:
(2) 编写函数cmpStr(char s1[],char s2[])比较两个字符串s1和 s2的大小。如果s1>s2,返回一个正数;s1=s2,返回0;s1<s2,返回一个负数,在主函数中调用该函数完成字符串的比较操作,并输出返回的值。
要求:
① 不允许使用strcmp()函数;
② 用gets()函数在主函数中输入两个字符串;
③ 实现触摸屏受托人()函数,返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值。
分析指导:
① 算法分析:两个字符串从第一个字符开始一一对应进行比较,直到不相等的那个字符,从而求得它们的ASCII码的差值。比如,‘A’与‘C’相比,由于‘A’<‘C’,应输出负数,由于‘A’与‘C’的ASCII码的差值为2,因此,应输出“-2”。同理,“And”和“Aid”比较,根据第二个字符比较结果,‘n’比‘I’大5,因此应输出‘5’;
② 根据分析情况编写程序:
#include<stdio.h>
int cmpstr(char s1[],char s2[])
{
int i,diff;
i=0;
while((s1[i]==s2[i])&&(s1[i]!='\0'))i++;
if(s1[i]=='\0'&&s2[i]=='\0')
diff=0;
else
diff=s1[i]-s2[i];
return diff;
}
void main()
{
int z;
char s1[100],s2[100];
printf("input the first string:");
//输入字符串1
gets (s1);
printf("input the second string:");
//输入字符串2
gets(s2);
z=cmpstr(s1,s2);
//输出比较结果
printf("the difference between two strings is %d\n",z);
}
查看运行结果如下:
重新输入两个字符串meet,mood运行结果如下:
(3) 再给定的字符串中查找指定的字符。
要求:
① 字符串采用直接初始化的方式处理;
② 通过scanf函数读入一个任意字符;
③ 在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的一次出现的位置,如果再给定的字符串中不存在该字符,则给出相应的说明信息。
#include<stdio.h>
void main()
{
int i;
char ch;
char s[]=" program";
printf(" 输入一个英文字母: ");
scanf("%c",&ch);
for (i=0;s[i]!='\0';i++)
{
if (s[i]==ch)
break;
}
if (i<7)
printf("s[%d]=%c\n",i,ch);
else
printf("No founded\n");
}
输入一个英文字母O运行程序如下:
再次输入一个英文字母w运行程序如下:
(4)首先输入一个大于二且小于十的整数n,然后定义一个二维整型数组(n*n),初始化该数组,讲述组中最大元素所在的行和最小元素所在的行对调。
要求:
① n*n数组元素的值由scanf函数从键盘输入(假定最大值最小值不在同一行上),然后输出该数组;
② 查找最大值最小值所在的行,将数组中最大元素所在的行和最小元素所在的行对调,并输出对调后的数组;
③ 为直观起见,数组按n行n列的方式输出;
④ 修改程序,对最大值与最小值可能出现在一行种的情况进行处理。
#include<stdio.h>
main()
{
long matrix[9][9],min,max,temp;
int i,j,n,nMax=0,nMin=0;
printf("\nplease inpute n of matrix:\n");
scanf("%d",&n);
printf("\nplease inpute elements of matrix(%d*%d):\n",n,n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%ld",&matrix[i][j]);
min=max=matrix[0][0];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(matrix[i][j]>max)
{
max=matrix[i][j];
nMax=i;
}
else if(matrix[i][j]<min)
{
min=matrix[i][j];
nMin=j;
}
}
for(j=0;j<n;j++)
{
temp=matrix[nMax][j];
matrix[nMax][j]=matrix[nMin][j];
matrix[nMin][j]=temp;
}
printf("\nResult matrix:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5ld",matrix[i][j]);
printf("\n");
}
}
输入一个数4,输入一个4*4的数组
1 3 6 7
2 4 5 8
1 3 5 7
2 6 9 7
运行程序如下:
再次输入一个数字3,输入一个3*3的数组
1 2 3
2 4 5
3 7 8
运行程序如下:
3 实验结论
通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用,还有就是掌握与数组有关的常用算法