php在范围中取值并使和为100

php中文网
发布: 2016-07-28 08:27:56
原创
1100人浏览过

<?php
	$n = array(
		'0' => '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],'-');
		if($r == ''||$r == false||$r == null){
			$r = strpos($a[$i],'~');
			if($r == ''||$r == false||$r == null){
				$c[$i][0] = $a[$i];
			}else{
				$b = explode('~', $a[$i]);
				$c[$i] = $b;
			}
		}else{
			$b = explode('-', $a[$i]);
			$c[$i] = $b;
		}
	}
	
	return $c;
}

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

以上就介绍了 php在范围中取值并使和为100,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号