<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title></title> <link rel="stylesheet" type="text/css" href="Basedemo/DemoPage.css"> </head> <body> <div id="main"> <div id="wrapper"> <h3>输入学生成绩以*隔开,计算学生的平均成绩,总成绩</h3> <div id="content"> <?php //关闭Notic级别的错误: //方法一:在对象前加@符 //方法二:在php.int文件中修改:error_reporting = E_All & ~E_NOTIE //方法三:在页面中添加:error_reporting(E_All ^ E_NOTICE); //$tScore=@$_REQUEST["txtScore"]; error_reporting(E_ALL ^ E_NOTICE); $tScore=$_REQUEST["txtScore"]; if($tScore!=null&&$tScore!="") { $score=explode("*",$tScore);//(8,8,8,7,5) $sum=0; foreach ($score as $key => $value) { $sum+=$value; } //平均成绩 $avg= $sum/count($score);//7.2 } ?> <form action="phplesson5_array2.php" mehtod="GET"> <span>请输入学生成绩:</span><input type="text" name="txtScore" value="<?php echo $tScore;?>"/> <input type="submit" value="计算"/> </form> </div> <h3>字符串分割和精确小数位</h3> <div id="content"> <?php //获取成绩 print_r($tScore);//8*8*8*7*5 echo "<br/><span>总成绩:</span>"; echo $sum."<br/>";//36 echo "<span>平均成绩:</span>"; echo round($avg,2);//round四舍五入,精确到小数点两位 ?> </div> <h3>数组的排序</h3> <div id="content"> <?php $arr1 = array(9,8,2,7,-5,-4,-1,11,20); //=====内部排序法===== //冒泡排序法 //将数据升序排序 echo "排序前:"; print_r($arr1); echo "<br/>"; //封装一个冒泡排序函数(参数值传递) function bubbleSort($arr) { for ($i=0; $i <count($arr) ; $i++) { for ($j=0; $j <count($arr)-1-$i ; $j++) { if($arr[$j]>$arr[$j+1])//如果前面的数大于后面的数,则交换位置 { $temp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } return $arr; } //冒泡排序函数(参数引用传递) function bubbleSort2(&$arr) { for ($i=0; $i <count($arr)-1 ; $i++) { for ($j=0; $j <count($arr)-1-$i ; $j++) { if($arr[$j]>$arr[$j+1])//如果前面的数大于后面的数,则交换位置 { $temp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } return $arr; } // $arr2 = bubbleSort($arr1); // bubbleSort2($arr1); // echo "冒泡排序后:"; // print_r($arr2); // print_r($arr1); //选择排序法:假设一个元素为最小值,每次循环与其它元素比较,获得最小值,与假设的最小值交换 function SelectSort(&$arr) { for ($i=0; $i < count($arr)-1; $i++) { //假设最小值是索引为$i的无素 $minVal = $arr[$i]; $minIndex = $i; //每次循环排除之前找出来的最小值从剩余的元素中找出一个最小值 for ($j=$i+1; $j <count($arr); $j++) { if($minVal>$arr[$j]) { $minVal = $arr[$j]; $minIndex = $j; } } $temp = $arr[$i]; $arr[$i]=$arr[$minIndex]; $arr[$minIndex] = $temp; } } SelectSort($arr1); // echo "选择排序后:"; // print_r($arr1); //插入排序法(升序) function insertSort(&$arr) { //先默认索引为0的元素是有序的 for ($i=1; $i < count($arr); $i++) { //准备要插入的元素和索引 $insertVal= $arr[$i]; $insertIndex = $i-1; while ( $insertVal<$arr[$insertIndex]&&$insertIndex>=0) { $arr[$insertIndex+1] = $arr[$insertIndex]; $insertIndex--; } $arr[$insertIndex+1] = $insertVal; } } insertSort($arr); echo "插入排序后:"; print_r($arr1); //快速排序法(递归 占用内存高 略) //=====外部排序法=====:数据量大,借助外部文件排序 //====交换式排序法====:冒泡排序法和快速排序法 ?> </div> <h3>数组元素的查找</h3> <div id="content"> <?php //1.顺序查:foreach 或 for 遍历数组匹配查找的元素 //2.二分查找:(前,提是数组必须是有序的) //先找到数组中间数,比较要查找的数与中间数的大小 //如果大于中间数,则向后找,否则向前找,直到找到 function BinarySearch($arr,$findVal,$leftIndex,$rightIndex) { if($rightIndex<$leftIndex) return "未找到"; //找到中间数的索引 $middleIndex = round(($rightIndex+$leftIndex)/2); if($findVal>$arr[$middleIndex]){//向后找 BinarySearch($arr,$findVal,$middleIndex+1,$rightIndex); } else if ($findVal<$arr[$middleIndex]) {//向前找 BinarySearch($arr,$findVal,$leftIndex,$middleIndex-1); } else{//如果等于中间值 return "找到了:".$arr[$middleIndex]."索引为:".$middleIndex; } } $arr4= array(1,8,10,58); $result = BinarySearch($arr4,8,0,count($arr3)-1); echo $result; ?> </div> <h3>二维数组</h3> <div id="content"> <?php //二维数组定义: $arr5 = array(array(1,2,3),array(4,5,6),array(34)); $arr5[3] = array(22,55); print_r($arr5); //二维数组的遍历: echo "<p>遍历二维数组:</p>"; for ($i=0; $i <count($arr5); $i++) { $items=""; foreach ($arr5[$i] as $value) { $items.=$value.", "; } echo $items."<br/>"; } ?> </div> </div> </div> <div id="footer"><div class="tri"></div><h1>Write some things for your project!</h1></div> </body> </html>