>  기사  >  백엔드 개발  >  PHP는 범위 내에서 값을 가져와서 합계를 100으로 만듭니다.

PHP는 범위 내에서 값을 가져와서 합계를 100으로 만듭니다.

WBOY
WBOY원래의
2016-07-28 08:27:56943검색
<?php
	$n = array(
		&#39;0&#39; => '1.1-4.6',
		'1' => '1.2-33.7',
		'2' => '1.3',
		'3' => '1.4-30',
		'4' => '15-44',
		'5' => '1.1-4.6',
		'6' => '1.2-33.7',
		'7' => '1.3',
		'8' => '1.4-43.9',
		'9' => '9.5-44',
	);
	$nn = check_zifu($n);
	for ($ii=0; $ii < count($nn); $ii++) { 
		if (count($nn[$ii]) > 1) {		//判断是否是范围,若不是,左边界值和右边界值相同
			$nnn[$ii]['min'] = ceil($nn[$ii][0]); 
			$nnn[$ii]['max'] = floor($nn[$ii][1]);
		}else{
			$nnn[$ii]['min'] = $nn[$ii][0];
			$nnn[$ii]['max'] = $nn[$ii][0];
		}
	}
	$nnnn = getNum($nnn);
	echo "<pre class="brush:php;toolbar:false">";
	print_r($nnnn);

function check_zifu($a){
	$c = array();
	for ($i=0; $i < count($a); $i++) { 
		$r = strpos($a[$i],&#39;-&#39;);
		if($r == &#39;&#39;||$r == false||$r == null){
			$r = strpos($a[$i],&#39;~&#39;);
			if($r == &#39;&#39;||$r == false||$r == null){
				$c[$i][0] = $a[$i];
			}else{
				$b = explode(&#39;~&#39;, $a[$i]);
				$c[$i] = $b;
			}
		}else{
			$b = explode(&#39;-&#39;, $a[$i]);
			$c[$i] = $b;
		}
	}
	
	return $c;
}

function getNum($arr){
	for ($i=0; $i < count($arr); $i++) { 
		$c[&#39;min&#39;][$i] = $arr[$i][&#39;min&#39;];
		$c[&#39;max&#39;][$i] = $arr[$i][&#39;max&#39;];
	}
	$min_sum = array_sum($c[&#39;min&#39;]);		//计算左边界值之和
	$max_sum = array_sum($c[&#39;max&#39;]);		//计算右边界值之和
	if($min_sum < 100 && $max_sum > 100){	//若左边界值和大于100或右边界值和小于100,不成立
		for ($iii=0; $iii < count($c[&#39;min&#39;]); $iii++) { 	//从第一位左边界值开始加一
			$max = $c[&#39;max&#39;][$iii];
			while ($c[&#39;min&#39;][$iii]+1 <= $max) {				//判断是否超出右边界值
				$c[&#39;min&#39;][$iii] = $c[&#39;min&#39;][$iii]+1;
				if (array_sum($c[&#39;min&#39;]) == 100) {
					return $c[&#39;min&#39;];
					break;
				}else if (array_sum($c[&#39;min&#39;]) > 100) {
					$c['min'][$iii] = $c['min'][$iii] - (array_sum($c['min']) - 100);
					return $c['min'];
					break;
				}
			}
		}
	}else if($min_sum == 100){		//若左边界值和为100
		for ($ii=0; $ii < count($c[&#39;min&#39;]); $ii++) { 
			$n[$ii] = $c[&#39;min&#39;][$ii];
		}
		return $c[&#39;min&#39;];
	}else if($max_sum == 100){		//若右边界值和为100
		for ($iiii=0; $iiii < count($c[&#39;max&#39;]); $iiii++) { 
			$n[$iiii] = $c[&#39;max&#39;][$iiii];
		}
		return $c[&#39;min&#39;];
	}else{
		echo &#39;error&#39;;
	}
}
?>

위 내용은 PHP가 범위에서 값을 가져와 그 합을 100으로 만드는 방법을 소개하며, 관련 내용도 포함되어 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Nginx安装启动다음 기사:php入门4 解析json对象