php的数组案例

多维数组-二维数组

基本语法:

$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] . "&nbsp;";

    }

    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

所谓矩阵转置,就是行列互换

 

 

比如 01->10

...

练习题:       

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>

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值