陈力:传智播客古代 珍宝币 泡泡龙游戏开发第30讲:PHP多维数组
在PHP程序设计语言中,如何创建二维数组呢,怎样使用二维数组,这些问题在网站建设中非常重要。二维数组的基本语法为: $a=array(array(),array()..),本文通过实例,对数组或者二维数组的知识进行介绍。
一、多维数组(二维数组)
二维数组的基本语法:
语法: $a=array(array(),array()..)
比如: $a=array(array(1,2),array(5,0));
定义例子:
$arr=array( array(1,2,3), array(5,6,9) );
$arr[0]=array(1,0);
二维数组的应用很多,比如地图,扫雷游戏等都使用了二维数组。
二维数组在内存中存在的形式:
二维数组案例:请用二维数组输出如下图形:
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
//首先定义一个二维数组:
$arr=array(
array(0,0,0,0,0,0,1),
array(0, 0, 1, 0 ,0 ,0,5),
array(0 ,2 ,0, 3, 0, 0,90),
array(0,0,0,0,0,0,100));
//遍历二维数组(行)
for($i=0;$i<count($arr);$i++){
//遍历每行的数据
for($j=0;$j<count($arr[$i]);$j++){
echo $arr[$i][$j]." ";
}
echo "<br/>";
}
echo "<br/>".$arr[2][3];
二、 二维数组的相关实例
(1)打印如下图型:
*********
*********
*********
*********
*********
*********
(2)打印如下图型:
*
**
***
****
*****
(3)打印如下图型:
(4)空心金字塔
(5)空心菱形
PHP程序设计代码如下:
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>
<option value="d">金字塔</option>
<option value="e">金字塔</option>
</select><br/>
<input type="submit" value="打印"/>
</form>
</html>
完成处理的homework01.php程序设计代码:
<?php
//$n表示层数
$n=$_REQUEST['layer'];
//"a"->表示矩形 "b"=>一半金子塔 "c"=>完整的金字塔
$shape=$_REQUEST['shape'];
$starNum=5;
//swtich
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;
case "c":
break;
}
}
printShape($n,$shape); //调用
?>
(6)已知手掌游戏机一台320元,mp3一台260元。公司举行抽奖大会,公司有18人,一等奖游戏机,二等奖mp3,购入5台游戏机,13台mp3。问总价为多少,公司实际平均给每人花费了多少钱。
<?php
$gamerPrice=320;
$mp3Price=260;
$gamerNum=5;
$mp3Num=13;
$totalPrice=$gamerPrice*$gamerNum+ $mp3Price* $mp3Num;
$avgPrice= $totalPrice/ 18;
?>
(7)跳水比赛
跳水比赛实例中,有8个评委打分。运动员的成绩是8个成绩取掉一个最高分,去掉一个最低分,剩下的6个分数的平均分就是最后得分。使用一维数组实现打分功能。
解题PHP代码:
<?php
$arr=array(90,23,89,100,2,5,89,44);
//如果只想知道最低分和最高分是多少,则可以排序。
//找出给出最低分的裁判
//该函数可以返回给出最低分的裁判的下标
function findMin($arr){
//假设第一个人就是给出最低分的裁判
$minFen=$arr[0];
$minIndex=0;
for($i=1;$i<count($arr);$i++){
//如果下面条件成立,说明$i 裁判给出的成绩更低
if($minFen>$arr[$i]){
$minFe=$arr[$i];
$minIndex=$i;
}
}
return $minIndex;
}
?>
(8)乘法表
<?php
for($i=1;$i<=3;$i++)
{
for($j=1;$j<=$i;$j++)
{
echo "$j*$i=".$i*$j;
echo ' ';
}
echo '<br/>';
}
?>
(9)学生成绩管理系统
实现一个简单学生成绩管理系统,定义一个数组,用户输入10个同学的成绩,数组下标即代表学生学号。要求:输入学号,打印该学生成绩;输入成绩,打印该学生学号;统计各个分数阶段学生人数(不及格,差,中,良,优);输入学号,实现删除学生成绩功能。
PHP程序设计代码如下:
<?php
$arr=array(10,30,40,55,9,11,67,55,100,90,80,85);
//这个一个专门用于查找成绩的函数
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 "<br/>没有学生考出这个成绩";
}
}
//接收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"){
//3、 统计各个分数阶段学生人数(不及格 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/> 差有".$stuStateArr[1]."<br/>中有".$stuStateArr[2]."<br/>良有".$stuStateArr[3]."<br/>优秀有".$stuStateArr[4];
}
?>
【推荐阅读】陈力:传智播客古代 珍宝币 泡泡龙游戏开发第30讲:PHP多维数组