PHP基础之查找
时间:2022-07-25
本文章向大家介绍PHP基础之查找,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
之前的文章介绍了PHP的运算符、流程控制、函数、排序等。有兴趣可以去看看。 PHP入门之类型与运算符 PHP入门之流程控制 PHP入门之函数 PHP入门之数组 PHP基础之排序 下面简单介绍一下查找,常用的查找有顺序查找、二分查找。
顺序查找
思想: 对某个数组,按照顺序,一个一个比较,然后找到你想要的数据。 代码案例:
<?php
#顺序查找
$myarr=array(4,3,9,1,6,23.5);
function search (&$myarr,$searchval){
#添加一个标志
$flag=false;
#遍历数组
for ($i=0;$i<count($myarr);$i++){
#进行查找
if ($myarr[$i]==$searchval){
echo "找到了,下标为=$i";
$flag=true;
}
}
if (!$flag){
echo '查询不到!';
}
}
#search($myarr,989); #会输出查询不到!
search($myarr,9);
?>
输出结果为: 找到了,下标为=2
二分查找
注意: 想使用二分查找有一个重要的前提,那就是数组必须是有序的,如果无序,需要先排序,再查找。 思想: 先找到这个数组的中间那个数,如果大于中间这个数,那就向后查找,如果小于中间这个数,那就向前查找。如果相等,那说明找到了。 代码案例:
<?php
#二分查找
$myarr=array(1,4,6,15,18,57);
function binarySearch (&$myarr,$findval,$leftindex,$rightindex){
#这个限制条件必须有,不然玩不转。return必须有,不然会一直循环。
if ($leftindex>$rightindex){
echo '没找到';
return;
}
#找到中间那个数
$middleindex=round(($leftindex+$rightindex)/2); #round是四舍五入取整
#如果大于中间的,向后找。
if ($findval>$myarr[$middleindex]){
binarySearch($myarr,$findval,$middleindex+1,$rightindex);
#如果小于中间的向前找
}elseif ($findval<$myarr[$middleindex]){
binarySearch($myarr,$findval,$leftindex,$middleindex-1);
}else{
echo "找到了,下标=$middleindex";
}
}
binarySearch($myarr,4,0,6);
echo '<br/>';
print_r($myarr);
?>
输出结果: 找到了,下标=1 Array ( [0] => 1 [1] => 4 [2] => 6 [3] => 15 [4] => 18 [5] => 57 )
案例
咱们了解了数组,排序,查找,做一个小练习吧。 要求: 现在有六个裁判对比赛进行打分,要求由用户输入裁判分数,并打印出来,去掉一个最高分和一个最低分,求出比赛的平均成绩。并找到打出最低分和最高分的裁判打印出来。 现在我们先做用户的输入界面,用一个表单就可以了。由于是本地,我就提交到了aipan02.php中。aipan02.php里面写核心代码。用户输入代码如下:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<h1>输入裁判打分的数据,空格隔开</h1>
<body>
<form action="caipan02.php" method="post">
请输入:<input type="text" name="sum">
<input type="submit" value="提交">
</form>
</body>
</html>
接下来思考,如何找到打出最低分和最高分的裁判。当我们假设数组的第一个就是最低或者最高的,然后遍历数组,依次与第一个进行比较,符合判断就交换元素和下标。这样是不是就可以找到了呢,咱们用代码说明。
<?php
$sums=$_POST['sum'];
$arr=explode(" ",$sums);
function dafen01 ($arr){
$minsum=$arr[0];
$minindex=0;
for ($i=0;$i<count($arr);$i++){
#找出打最低分的裁判
if ($minsum>$arr[$i]){
$minsum=$arr[$i];
$minindex=$i;
}
}
return $minindex;
}
function dafen02 ($arr){
$maxsum=$arr[0];
$maxindex=0;
for ($i=0;$i<count($arr);$i++){
#找到打最高分的裁判
if ($maxsum<$arr[$i]){
$maxsum=$arr[$i];
$maxindex=$i;
}
}
return $maxindex;
}
$minindex=dafen01($arr);
$maxindex=dafen02($arr);
echo "下标为".$minindex."打的分数最低为".$arr[$minindex];
echo '<br/>';
echo "下标为".$maxindex."打的分数最高为".$arr[$maxindex];
echo '<br/>';
echo "**********************".'<br/>';
#遍历数组并求平均值
$sums=0;
for ($i=0;$i<count($arr);$i++){
echo "下标为"."$i"."的裁判打的分为".$arr[$i];
echo '<br/>';
if ($i!=$minindex && $i!=$maxindex){
$sums+=$arr[$i];
}
}
echo '<br/>';
echo "除去最高分和最低分的平均值为".$sums/(count($arr)-2);
?>
下面我们用用户输入:88 90 60 78 100 93 执行后的效果如下图:
小结
上面就是关于查找的一下内容,希望对大家有所帮助。
- Apache/Nginx伪静态规则匹配http://出现的问题与解决
- 微信文件微起底
- Go语言TCP Socket编程--1
- Go语言TCP Socket编程--2
- 服务器 数据库设计技巧--1
- CVE-2015-0235:Linux glibc高危漏洞的检测及修复方法
- zabbix监控在lnmp环境下编译安装小记
- 【重磅】百度开源分布式深度学习平台,挑战TensorFlow (教程)
- WordPress评论ajax动态加载,解决静态缓存下评论不更新问题
- WordPress显示访客UA信息:Show UserAgent纯代码轻度汉化版
- WordPress开启颜色评论但不造成XSS漏洞的小方法
- WordPress强迫症技巧:让文章(ID)地址完美连续(障眼法)
- iOS内存管理:从MRC到ARC实践
- MySQL错误修复:Table xx is marked as crashed and last (automatic?) repair failed
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC