• PHP基础之 数组(二)


    <!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>
  • 相关阅读:
    shell脚本操作mysql通用脚本
    chfs共享系统搭建
    P6717 [CCO2018] Boring Lectures题解
    vim快捷命令
    第一个pnpm的工程
    js/react方法学习
    赵长鹏:我所遵循的 15 条处事原则
    《Unix&Linux系统编程》第五章学习笔记
    stat命令的实现mysate
    《Unix&Linux系统编程》第三章学习笔记
  • 原文地址:https://www.cnblogs.com/lt-style/p/3491299.html
Copyright © 2020-2023  润新知