PHP数组学习之比较数组元素,获取第一大和第二大值

简介: 在之前的文章中我们介绍了使用冒泡算法对数组元素进行升序排序的方法,感兴趣的可以点击链接进行查阅→《PHP数组学习之使用冒泡算法对元素进行升序排序!》。这次我们继续PHP数组学习系列,介绍一下比较数组元素,获取第一大和第二大值的方法。本文的主题是:“给出一组数字,计算出它的最大值和第二大值”。

在之前的文章中我们介绍了使用冒泡算法对数组元素进行升序排序的方法,感兴趣的可以点击链接进行查阅→《PHP数组学习之使用冒泡算法对元素进行升序排序!》。这次我们继续PHP数组学习系列,介绍一下比较数组元素,获取第一大和第二大值的方法。
本文的主题是:“给出一组数字,计算出它的最大值和第二大值”。

实现思路:使用数组来包裹这一组数字,因而这里会涉及到了比较数组元素的大小

设置两个变量$max和$secMax,用于存放获取到的最大值和第二大值。不过需要先给大家赋初值,将数组第一个元素和第二个元素赋给它们。但要保证$max比$secMax大,所以要做一个判断

if ($arr[0] > $arr[1]){//这个if是为了防止出现数组第一个值就是最大值

    $secMax = $arr[1];
} else if ($arr[0] < $arr[1]){
    $max = $arr[1];
}

然后使用for循环,不断遍历$arr数组。【不懂的可以阅读文章《PHP循环学习三:如何使用for循环语句遍历数组》】

for ($i = 0;$i< count($arr);$i++){ //循环数组
//循环体
}
在循环体中,不断将$max、$secMax与数组每个值($arr[$i])比较:

如果$arr[$i]比$max大,则将$max值赋给$secMax,把$arr[$i]赋给$max,

if ($arr[$i] > $max){

$secMax = $max;
$max = $arr[$i];

}
而如果 $arr[$i] 小于 $max,但 $arr[$i] 又大于 $secMax,则只交换 $secMax 和 $arr[$i] 间的值 ,将$arr[$i]复制给$secMax。

if ($arr[$i] < $max && $arr[$i] > $secMax){

  $secMax = $arr[$i];

}
这样不断比较下去,就可以确保$max存放着数组最大值,$secMax存放着数组第二大值。

我们来看看完整的实现代码:

function takeNum($arr){
//定义了两个变量$max和$secMax来存放最大和第二大的数值

$max = 0;
$secMax = 0;
if ($arr[0] > $arr[1]){//这个if是为了防止出现数组第一个值就是最大值
    $secMax = $arr[1];
} else if ($arr[0] < $arr[1]){
    $max = $arr[1];
}
for ($i = 0;$i< count($arr);$i++){//循环数组
    if ($arr[$i] > $max){
        $secMax = $max;
        $max = $arr[$i];
    } else if ($arr[$i] < $max && $arr[$i] > $secMax){
        $secMax = $arr[$i];
    }
}
echo "最大值为".$max.",第二大值为".$secMax;

}
测试一下:定义了下面一个数组,调用takeNum($arr)函数来看看输出情况

$arr = array(555,5,1,429,18,21,52,2,52,9,3,);
takeNum($arr);
可以看出第一大值为555,第二大值为429;看看输出结果是不是这个:

1.png

OK,输出结果是正确的。

接下来我们来聊聊使用到的知识点,循环就不必多说了(可以阅读文章《PHP循环学习系列大汇总》),下面给大家简单介绍一下if else 语句。

if else 语句是流程控制中根据条件判断执行的一种。该语句执行时先对条件进行判断,然后根据判断结果做出相应的操作。它又可以细分为三种,分别是 if 语句、if...else 语句、if...else if...else 语句。

if 语句的语法:

if (判断条件) {

语句块;

}
if...else 语句的语法:

if (判断条件) {

语句块 1;

} else {

语句块 2;

}
if...else if...else 语句的语法:

if (判断条件 1) {

语句块 1;

} else if (判断条件 2) {

语句块 2;

} else if (判断条件 3) {

语句块 3;

}
......
好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程

最后给大家推荐一个PHP数组的免费视频教程:PHP函数之array数组函数视频讲解,快来学习吧!

以上就是PHP数组学习之比较数组元素,获取第一大和第二大值的详细内容,更多请关注富贵论坛www.fgba.net其它相关文章!

目录
相关文章
|
6月前
|
PHP C++ 索引
PHP 高效之道:字符串与数组处理的实用技巧
PHP 高效之道:字符串与数组处理的实用技巧
272 83
|
7月前
|
JSON 数据处理 PHP
PHP数组处理技巧:高效操作数据集合
PHP数组处理技巧:高效操作数据集合
|
7月前
|
JSON 安全 大数据
PHP中的数组处理艺术:灵活高效的数据操作
PHP中的数组处理艺术:灵活高效的数据操作
|
7月前
|
大数据 数据处理 PHP
PHP中的数组过滤与映射:高效数据处理技巧
PHP中的数组过滤与映射:高效数据处理技巧
|
6月前
|
存储 JSON PHP
PHP数组键值转换的隐秘陷阱:整数还是字符串?
PHP数组键值转换的隐秘陷阱:整数还是字符串?
229 58
|
6月前
|
PHP 开发者 索引
探究PHP中常见数组操作函数
在编码实践中,合理利用这些数组操作函数可以简化编程工作,提升代码的效率和可读性。为达到最佳实践,开发者应该通过阅读官方文档来深入理解每个函数的工作原理以及如何在不同的场景下运用它们。
248 8
|
6月前
|
测试技术 PHP 开发者
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
|
PHP 索引
**PHP删除数组中特定元素的两种方法array_splice()和unset()
方法一: 复制代码代码如下: 输出:array(4) { [0]=> int(1) [1]=> int(5) [2]=> int(7) [3]=> int(8) }   方法二: 复制代码代码如下: 输出:array(4) { [0]=> int(1) [2]=> int(5) [3]=> int(7) [4]=> int(8) }   总结:可以看到使用array_splice()删除特定值和使用unset删除特定值是有区别的。
886 0
|
4月前
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
352 0
PHP和Mysql前后端交互效果实现
|
9月前
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
457 17