多维数组-二维数组
基本语法:
$arr=array(array(1,2),array(3,4),...);
$arr[0]=array(1,0);
二维数组在内存的存在形式:
快速入门:
<?php
//定义移个数组
$arr = array (array (1, 1, 1, 2, 1, 3, 5, 6 ), array (1, 1, 1, 2, 1, 3 ), array (1, 1, 1, 2, 1, 3 ), array (1, 1, 1, 2, 4, 3 ) )
;
//遍历行
for($i = 0; $i < count ( $arr ); $i ++) {
//遍历每行的数据
for($j = 0; $j < count ( $arr [$i] ); $j ++) {
echo $arr [$i] [$j] . " ";
}
echo "</br>";
}
echo $arr [3] [4];
?>
结果:
1 1 1 2 1 3 5 6
1 1 1 2 1 3
1 1 1 2 1 3
1 1 1 2 4 3
4
所谓矩阵转置,就是行列互换
比如 0行1列->1行0列
...
练习题:
1,灵活的使用switch语句
view.php
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<form action="homework01.php" method="post">
请输入层数:<input type="text" name="layer" /><br />
请选择形状: <select name="shape">
<option value="a">矩形</option>
<option value="b">半金字塔</option>
<option value="c">金字塔</option>
</select><br />
<input type="submit" value="打印" /></form>
</html>
homework01.php
<?php
//$n=12;
$n = $_REQUEST ['layer'];
//$shape="b";
$shape = $_REQUEST ['shape'];
$starNum = 5;
function printShape($n, $shape, $starNum = 5) {
switch ($shape) {
case "a" :
for($i = 1; $i <= $n; $i ++) {
for($j = 1; $j <= $starNum; $j ++) {
echo "*";
}
echo "<br/>";
}
break;
case "b" :
for($i = 1; $i <= $n; $i ++) {
for($j = 1; $j <= $i; $j ++) {
echo "*";
}
echo "</br>";
}
break;
}
}
printShape ( $n, $shape );
?>
结果:
2,乘法表
3,裁判打分
跳水比赛,8个评委打分。运动员的成绩是8个成绩去掉一个最高分,去掉一个最低分,
剩下的6个分数的平均分就是最后得分。使用一维数组实现打分功能。
请把打最高分的评委和最低分的评委找出来
解题:
<?php
$arr = array (69, 89, 11, 13, 80 );
//这里有一思路,如果只想知道最低分和最高分是多少,则可以排序。
function findMin(&$arr) {
//假设第一个人就是给出最低分的裁判
//如果我们将来,希望返回多个值。
//结果放到数组里
//$arr1=array();
$minFen = $arr [0];
$minIndex = 0;
//如果下面的条件成立,说明$i裁判给出的成绩更低
for($i = 1; $i < count ( $arr ); $i ++) {
if ($minFen > $arr [$i]) {
$minFen = $arr [$i];
$minIndex = $i;
}
}
return $minIndex;
}
function findMax(&$arr) {
//假设第一个人就是给出最高分的裁判
$maxFen = $arr [0];
$maxIndex = 0;
//如果下面的条件成立,说明$i裁判给出的成绩更高
for($i = 1; $i < count ( $arr ); $i ++) {
if ($maxFen < $arr [$i]) {
$maxFen = $arr [$i];
$maxIndex = $i;
}
}
return $maxIndex;
}
$minIndex = findMin ( $arr );
$maxIndex = findMax ( $arr );
//echo "最小下标".$minIndex;
//echo "最大下标".$maxIndex;
//开始计算平均成绩
$sum = 0;
for($i = 0; $i < count ( $arr ); $i ++) {
if ($i != $minIndex && $i != $maxIndex) {
$sum += $arr [$i];
}
}
echo "平均成绩是" . $sum / (count ( $arr ) - 2);
?>
扩展:
找出最佳评委和最差评委。最佳评委就是打分和最后得分最接近的评委
//开始计算最佳评委
$difFen=abs($arr[0]-$avgGrade);
echo $difFen;
$goodIndex=0;
for($i=1;$i<count($arr);$i++){
//if($i!=$minIndex&&$i!=$maxIndex){
if($difFen>=abs($arr[$i]-$avgGrade)){
$difFen=abs($arr[$i]-$avgGrade);
$goodIndex=$i;
}
}
echo "最佳评委是".$goodIndex;
扩展提问->
如果有多个最佳评委,怎么办?!不只一个,,,
4,简单的学生成绩管理系统
实现一个简单的学生成绩管理系统
定义一个数组,用户输入十个同学的成绩,群组下标即代表学生学号要求:
1,输入学号,打印该学生的成绩
2,输入成绩,打印该学生学号
3,统计各个分数段学生人数(不及格0-59,差60-69,中70-79,良80-89,优90-100)
4,输入学号,实现删除学生成绩功能
函数被用到3次以上,再去封装
homework03.php
<?php
$arr = array (10, 10, 34, 78, 90 );
//这厮一个专门用于查找成绩的函数
function showStuGrade($stuNo, &$arr) {
//查找
return $arr [$stuNo];
}
//再一个函数
function showStuNo($grade, &$arr) {
$flag = false;
for($i = 0; $i < count ( $arr ); $i ++) {
if ($grade == $arr [$i]) {
echo "<br/>学号为" . $i . "学生成绩是:" . $grade;
$flag = true;
}
}
if ($flag == false) {
echo "没有学生考出这个成绩 ";
}
}
//接受doing值,从而判断,该用户点击那个按钮
$doing = $_REQUEST ["doing"];
if ($doing == "seaGrade") {
//接受学生的编号:
$stuNo = $_REQUEST ["stuNo"];
echo "学生编号是" . $stuNo . "的成绩是" . showStuGrade ( $stuNo, $arr );
} elseif ($doing == "seaStuNo") {
//接受用户输入的成绩
$grade = $_REQUEST ["grade"];
showStuNo ( $grade, $arr );
} else if ($doing == "stuState") {
// echo //"希望看到学生的统计情况";
// 统计各个分数段学生人数(不及格0-59,差60-69,中70-79,良80-89,优90-100)
$stuStateArr = array (0, 0, 0, 0, 0 );
for($i = 0; $i < count ( $arr ); $i ++) {
if ($arr [$i] >= 0 && $arr [$i] <= 59) {
$stuStateArr [0] += 1;
} else if ($arr [$i] >= 60 && $arr [$i] <= 69) {
$stuStateArr [1] += 1;
} else if ($arr [$i] >= 70 && $arr [$i] <= 79) {
$stuStateArr [2] += 1;
} else if ($arr [$i] >= 80 && $arr [$i] <= 89) {
$stuStateArr [3] += 1;
} else if ($arr [$i] >= 90 && $arr [$i] <= 100) {
$stuStateArr [4] += 1;
}
}
echo "<br/>统计结果如下:不及格有" . $stuStateArr [0] . "<br/>";
echo "<br/>统计结果如下:差有" . $stuStateArr [1] . "<br/>";
echo "<br/>统计结果如下:中有" . $stuStateArr [2] . "<br/>";
echo "<br/>统计结果如下:良有" . $stuStateArr [3] . "<br/>";
echo "<br/>统计结果如下:优秀有" . $stuStateArr [4] . "<br/>";
}
?>
view2.php
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gbk2312" />
</head>
<h1>学生成绩管理系统</h1>
<form action="homework03.php" method="post">
请输入学生的学号0-9:<input type="text" name="stuNo" /><br />
<!--隐藏控件-->
<input type="hidden" name="doing" value="seaGrade" /> <input
type="submit" value="查询成绩" /></form>
<br />
<br />
<form action="homework03.php" method="post">
请输入学生的成绩:<input type="text" name="grade" /><br />
<input type="hidden" name="doing" value="seaStuNo" />
<input type="submit" value="查询学生编号" /><br />
<br />
<input type="hidden" name="doing" value="stuState" />
<input type="submit" value="查询学生统计" /></form>
</html>