关于自己封装的一个php数学方法的类

以下是自己整理的一些方法源码,不喜勿喷

class Math{
		public function getMiddle($arr){ //求出中位数。
			$middleLen = ceil(sizeof($arr)/2);
			$base = $arr[0];
			if( sizeof($arr) == 1) { return $base;}
			$l_arr = array();
			$r_arr = array();
			for($i =1;$i< sizeof($arr);$i++){
				if( $arr[$i] < $base) { $l_arr[]= $arr[$i];}  //小于的往左边放,大于的往右边放。
				else{
					$r_arr[]= $arr[$i];
				}
			}
			if( sizeof($l_arr) == $middleLen -1){
				return $base;
			}else if( sizeof($l_arr) > $middleLen -1){ //左边数组过大
				return $this->getMiddle($l_arr , $middleLen);
			}else{  //右边更大.
				$middleLen =  $middleLen - sizeof($l_arr);
				return $this->getMiddle($r_arr , $middleLen);
		   }
		}
		public function getAvg($arr){ //求出平均数。
			$max=0;
			for($i=0;$i<count($arr);$i++){
				$max+=floor($arr[$i]);
			}
			return $max/count($arr);
		}
		public function getMax($arr){ //求出最大值。
			$pos = array_search(max($arr), $arr); 
			return $arr[$pos];
		}
		public function getMin($arr){ //求出最小值。
			$pos = array_search(min($arr), $arr); 
			return $arr[$pos];
		}
		public function getjicha($arr){//求出极差
			return $this->getMax($arr)-$this->getMin($arr);
		}
		public function getNumber($arr){//求出出现最多的值和次数
			$arr = array_count_values($arr);
			arsort($arr);
			$max_number = reset($arr);
			$more_value = key($arr);
			$row=array();
			$row['value']=$more_value;//出现最多的次数值
			$row['value']=$max_number;//出现次数最多的值
			return $row;
		}
		function NextNumberArray($Number, $NumberRangeArray){
		//NextNumberArray(1, array(1, 2, 4, 5, 6, 7))求出数组中最接近1的数字
	        $w = 0;
	        $c = -1;
	        $abstand = 0;
	        $l = count($NumberRangeArray);    
	        for($pos=0; $pos < $l; $pos++){
	          $n = $NumberRangeArray[$pos];
	          $abstand = ($n < $Number) ? $Number - $n : $n - $Number;
	          if ($c == -1){
	            $c = $abstand;
	            continue;
	          }
	          else if ($abstand < $c){
	            $c = $abstand;
	            $w = $pos;
	          }
	        }
	          //10-20更新
	          //因为我们项目是计算时间,时间只能向前查找,所以需要根据当前的数字再次判断,若接近时间大于当前时间,需要获取前一位的时间
	          if ($Number < $NumberRangeArray[$w]) {
	                  return $NumberRangeArray[$w -1];
	              }
	        return $NumberRangeArray[$w];
	     }
	}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值