【PHP】 多种解法 获取给定值在数值中的最大下限,你能给出你的解法吗?

justphp 发布于 2013/12/16 17:07
阅读 498
收藏 2
PHP
$arr = array(2 , 6 , 8 , 10 , 12 , 30);

$current = 9;

//求解 当前值在数组中的最大下限值(3)

//我自己先给出一种
	$arr = array(2 , 6 , 8 , 10 , 12 , 30);
	$current = 9;
	
	$newArr = array();
	for($i=count($arr)-1;$i>=0;$i--){
		$newArr[count($arr) - $i - 1] = $arr[$i];
	}
	
	foreach ($newArr as $key=>$val){
		if($current >= $val) break;
	}
	echo $val;



加载中
0
Tuesday
Tuesday
$rr = array(-1,23,1,2,3,4,6575,242,6,-6,3,2,6); //无论数字怎么变化, 它都可以找到最小, 最大值.

$min = 0;
$max = 0;
foreach($rr as $key=>$val){
    if($key > 0){
      $val < $min && $min = $val;
    }else
      $min = $val;
    
    if($val >= $max) $max = $val;
} 

echo "min: $min, max: $max";


0
justphp
justphp
//第二种
	$arr = array(2 , 6 , 8 , 10 , 12 , 30);
	$current = 9;
	
	foreach ($arr as $key=>$val){
		if ($arr[$key+1] > $current && $current >= $val) {
			break;
		}
	}
	
	echo $val;



0
x
xuge
rsort($arr);
    foreach($arr as $val){
    if($current >= $val) break;
    }

    echo $val;

不就完了吗

justphp
justphp
没错! 使用api函数,确实简化了上面的第一种解法!
0
Tuesday
Tuesday

$arr = array(-2,61,20 ,15, 63 , 8 , 10 , 12 , 30);

$max = 0;

$min = 0;

不可增加变量, 不可用函数, 仅可用一个foreach, 求计算出它最大值, 最小值.

0
justphp
justphp

@Tuesday

$arr = array(-2,61,20 ,15, 63 , 8 , 10 , 12 , 30);
	$min = $max = 0;
	
	foreach ($arr as $key=>$val){
		if($val < $min) $min = $val;
		if($val > $max) $max = $val;
	}
	unset($key , $val , $arr);
	echo $min.'--'.$max;



0
Tuesday
Tuesday

引用来自“justphp”的答案

@Tuesday

$arr = array(-2,61,20 ,15, 63 , 8 , 10 , 12 , 30);
	$min = $max = 0;
	
	foreach ($arr as $key=>$val){
		if($val < $min) $min = $val;
		if($val > $max) $max = $val;
	}
	unset($key , $val , $arr);
	echo $min.'--'.$max;



亲,
$arr = array(5,61,20 ,15, 63 , 8 , 10 , 12 ,1, 30);

不对哦...
justphp
justphp
回复 @Tuesday : 给出你的解!!
Tuesday
Tuesday
回复 @justphp : 你运行一下看看效果...
justphp
justphp
回复 @Tuesday : 我知道! $min 和 $max 取$arr 中的随机一个元素 就行
Tuesday
Tuesday
回复 @justphp : 用我上面这个数组... 你得考虑我的数字在变化呀...
justphp
justphp
打印的结果 就是 -2 和 63! 怎么不对了?
0
Tuesday
Tuesday

引用来自“justphp”的答案

@Tuesday

$arr = array(-2,61,20 ,15, 63 , 8 , 10 , 12 , 30);
	$min = $max = 0;
	
	foreach ($arr as $key=>$val){
		if($val < $min) $min = $val;
		if($val > $max) $max = $val;
	}
	unset($key , $val , $arr);
	echo $min.'--'.$max;



$arr = array(5,61,20 ,15, 63 , 8 , 10 , 12 ,1, 30); 
$min = $max = 0;
	
foreach ($arr as $key=>$val){
	if($val < $min) $min = $val;
	if($val > $max) $max = $val;
}
unset($key , $val , $arr);
echo $min.'--'.$max;  
// 0-- 63 明显是不对的, 数组中最小的值是1


0
justphp
justphp
@Tuesday 这种方法可行吧!
foreach ($arr as $key=>$val){
		if ($key==0) {
			$min = $arr[$key+1] > $arr[$key] ? $arr[$key] : $arr[$key+1];
			$max = $arr[$key+1] < $arr[$key] ? $arr[$key] : $arr[$key+1];
		}
		else {
			if(!isset($arr[$key+1])) break;
			$min = $arr[$key+1] > $arr[$key] ? ($arr[$key] > $min ? $min : $arr[$key]) : ($arr[$key+1] > $min ? $min : $arr[$key+1]);
			$max = $arr[$key+1] < $arr[$key] ? ($arr[$key] < $max ? $max : $arr[$key]) : ($arr[$key+1] < $max ? $max : $arr[$key+1]);
		}
	}
	echo $min.'--'.$max.'<br/>';



Tuesday
Tuesday
不可以用函数... 亲.
0
justphp
justphp
@Tuesday 请把你觉得满足你的条件的解法 贴出来!  
0
Tuesday
Tuesday

引用来自“justphp”的答案

@Tuesday 请把你觉得满足你的条件的解法 贴出来!  

$arr =array(5,61,20 ,15, 63 , 8 , 10 , 12 ,1, 30);

需求很简单呀, $max, $min 变量, 不用函数请找到最大, 最小的值.

返回顶部
顶部