Bey-Hey 2023-04-17 14:11 采纳率: 82.6%
浏览 8
已结题

php如何求带字符串类型和整数类型的最大值和最小值

如何求带字符串类型和整数类型的最大值和最小值

<?php
    $arr1=array('xq'=>'第四学期','name'=>'张一','C语言'=>88,'java语言'=>98,'数据库'=>78,'数据结构'=>96,'php'=>99,'软件工程'=>84,'UML'=>83);

    $arr2=array('xq'=>'第四学期','name'=>'张二','C语言'=>88,'java语言'=>77,'数据库'=>87,'数据结构'=>96,'php'=>98,'软件工程'=>84,'UML'=>83);
    $arr3=array('xq'=>'第四学期','name'=>'张三','C语言'=>88,'java语言'=>93,'数据库'=>76,'数据结构'=>96,'php'=>97,'软件工程'=>84,'UML'=>83);
    
    $sum1=0;
    $sum2=0;
    $sum3=0;
    
         foreach($arr1 as $array1){
        if(is_numeric($array1)){
            $sum1=$sum1+$array1;
            $max1=max($arr1);
            $min1=min($arr1);
        }else{
            continue;
        }
    }
        foreach($arr2 as $array2){
        if(is_numeric($array2)){
            $sum2=$sum2+$array2;
            $max2=max($arr2);
            $min2=min($arr2);
        }
    }
    
        foreach($arr3 as $array3){
        if(is_numeric($array3)){
            $sum3=$sum3+$array3;
            $max3=max($arr3);
            $min3=min($arr3);
        }
    }

    echo $arr1['name'].'同学'.$arr1['xq'].'的平均分是:'.($sum1/(count($arr1)-2)).'分<BR>'.'最高分是:'.$max1.'分<BR>'.'最低分是:'.$min1.'分<BR>';
    echo $arr2['name'].'同学'.$arr2['xq'].'的平均分是:'.($sum2/(count($arr2)-2)).'分<BR>'.'最高分是:'.$max2.'分<BR>'.'最低分是:'.$min2.'分<BR>';                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
    echo $arr3['name'].'同学'.$arr3['xq'].'的平均分是:'.($sum3/(count($arr3)-2)).'分<BR>'.'最高分是:'.$max3.'分<BR>'.'最低分是:'.$min3.'分<BR>';
?>

  • 写回答

2条回答 默认 最新

  • 努力の小熊 2023-04-17 15:08
    关注

    努力の小熊结合chatgpt的答案:
    在给定的 PHP 代码中,使用了 foreach 循环遍历数组并判断数组元素是否为数值类型,累加数值类型元素的和,并使用 max 和 min 函数获取最大值和最小值。但是这种方式需要分别在每个数组中进行循环,代码重复度较高。

    下面是一个更简洁的实现方式,利用 array_column 函数、array_filter 函数和 is_numeric 函数对数组进行处理,可以直接得到字符串类型和整数类型的最大值和最小值:

    $arr1 = array('xq'=>'第四学期','name'=>'张一','C语言'=>88,'java语言'=>98,'数据库'=>78,'数据结构'=>96,'php'=>99,'软件工程'=>84,'UML'=>83);
    $arr2 = array('xq'=>'第四学期','name'=>'张二','C语言'=>88,'java语言'=>77,'数据库'=>87,'数据结构'=>96,'php'=>98,'软件工程'=>84,'UML'=>83);
    $arr3 = array('xq'=>'第四学期','name'=>'张三','C语言'=>88,'java语言'=>93,'数据库'=>76,'数据结构'=>96,'php'=>97,'软件工程'=>84,'UML'=>83);
    
    // 获取各个数组中所有成绩的数组
    $scores1 = array_filter(array_column($arr1, null), 'is_numeric');
    $scores2 = array_filter(array_column($arr2, null), 'is_numeric');
    $scores3 = array_filter(array_column($arr3, null), 'is_numeric');
    
    echo $arr1['name'].'同学'.$arr1['xq'].'的平均分是:'.(array_sum($scores1)/count($scores1)).'分<BR>'.'最高分是:'.max($scores1).'分<BR>'.'最低分是:'.min($scores1).'分<BR>';
    echo $arr2['name'].'同学'.$arr2['xq'].'的平均分是:'.(array_sum($scores2)/count($scores2)).'分<BR>'.'最高分是:'.max($scores2).'分<BR>'.'最低分是:'.min($scores2).'分<BR>';
    echo $arr3['name'].'同学'.$arr3['xq'].'的平均分是:'.(array_sum($scores3)/count($scores3)).'分<BR>'.'最高分是:'.max($scores3).'分<BR>'.'最低分是:'.min($scores3).'分<BR>';
    

    在这种实现方式中,首先使用 array_column 函数获取每个数组中所有值,并使用 array_filter 函数和 is_numeric 函数过滤出数值类型元素,然后直接调用 array_sum、max 和 min 函数即可得到相应的统计结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 修改了问题 4月17日
  • 创建了问题 4月17日