扫码关注官方订阅号
这样的数组 如何 计算出 最大值 最小值
一眼可以看出最小值是 0 最大值是 459 但是怎么 用php算出来尼
走同样的路,发现不同的人生
1.转换成一维数组,分别用min和max求出最小和最大
function getMaxAndMin($items){ $newItems=[]; $cutStr=',';//要分割的字符 foreach($items as $item) { //保证是String并且包含',' if(is_string($item) && strpos($item,$cutStr)!==false) { list($t1,$t2)=explode(',',$item) $newItems[]=$t1; $newItems[]=$t2; }else{ $newItems[]=$item; } } return [min($newItems),max($newItems)]; } $exampleArr=[ '0,129', '130,249', '250,459' ]; list($min,$max)=getMaxAndMin($exampleArr);
补充一个楼下的方案,更简单@jacoob_w
function getMaxAndMin($items,$operator=',') { $data = explode($operator, join($operator,$data)); return [min($data),max($data)]; }
<?php define('CLI_SCRIPT', true); $example = array( '0, 129', '130, 249', '250, 459' ); $new_arr = []; foreach ($example as $item) { $new_items = explode(',', $item); $new_arr = array_merge($new_arr, $new_items); } var_dump($new_arr); sort($new_arr, SORT_NUMERIC); //排序 $min = array_shift($new_arr); //最小值 $max = array_pop($new_arr); //最大值 var_dump($min); var_dump($max);
1.你可以手动去实现算法,不过性能可想而知2.建议使用PHP内置函数:http://php.net/manual/zh/func...
$arr = array( '0,129', '130,249', '250,459', ); $mix = intval($arr[0]); $max = explode(',', end($arr))[1];
结合实际情况使用因为见到题主还有其他的问题,认定他的数据结构就是这样,大小从上至下增加
这么快就采纳答案了,个人觉得采纳的不是最优方案呀。
$data = array( '0,129', '130,249', '380,22' ); $dataArr = explode(',', join(',',$data)); echo "max:".max($dataArr)."<br/>"; echo "min:".min($dataArr);
$data = ['0,129','130,249','250,459']; $str=implode(',',$data); $arr=explode(',',$str); var_dump(max($arr)); var_dump(min($arr));
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
1.转换成一维数组,分别用min和max求出最小和最大
补充一个楼下的方案,更简单
@jacoob_w
1.你可以手动去实现算法,不过性能可想而知
2.建议使用PHP内置函数:http://php.net/manual/zh/func...
结合实际情况使用
因为见到题主还有其他的问题,认定他的数据结构就是这样,大小从上至下增加
这么快就采纳答案了,个人觉得采纳的不是最优方案呀。