<?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速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号