如何求带字符串类型和整数类型的最大值和最小值
<?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>';
?>
努力の小熊结合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 函数即可得到相应的统计结果。
strpos() 函数返回字符串在另一个字符串中第一次出现的位置,如果没有找到该字符串,则返回 false。
语法
strpos(string,find,start)
参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。
注释:该函数对大小写敏感。如需进行对大小写不敏感的搜索,请使用 stripos()函数。
例子:
//利用 strpos函数 注意要用 !==
$data="SQLSTATE";
$msg="SQLSTATE[42000]: Syntax error or access violation: 1064 You ";
if(strpos($msg,$data) !== false){
echo '包含SQLSTATE';
}else{
echo '不包含SQLSTATE';
}