作者ImNot5566 (❺❺❻❻)
看板PHP
标题Re: [问题] 判断一数字是否介於某些范围之内
时间Fri Jun 12 17:40:37 2015
蛮酷的需求
来练功一下
$a=[2,7,14,28,32,38,41,49];
$two_pair_as_range_compare = function($array, $compare){
$range = array_chunk($array,2);
foreach($range as $eq){
if( $compare>=$eq[0] && $compare<=$eq[1] )
return true;
}
return false;
};
var_dump($two_pair_as_range_compare($a, 要比对的数字));
※ 引述《red0whale (red whale)》之铭言:
: 假设我有一阵列变数$a=[2,7,14,28,32,38,41,49];
: 今假设一个数$b
: 请问怎麽判断$b是否介於2~7、14~28、32~38、41~49这些范围之内?
: (亦即$b是否介於$a的数值范围内,假设$a有偶数个元素)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.226.156.120
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1434102040.A.B69.html
1F:→ CaptainH: 有点想嘘...一个 for 可以完成的事弄得这麽糟 06/12 18:21
2F:→ CaptainH: 复制了一大堆没必要的东西 06/12 18:21
我想太复杂了 哈 for就可以做完了
※ 编辑: ImNot5566 (36.226.156.120), 06/12/2015 18:41:50
3F:推 hareion08: 虽然不是最好解决法,但是推教学相长! 06/12 21:18
4F:推 poeta: 原文是这样吗?还是改过了? 06/13 01:45
我没改
5F:推 mmis1000: 这种做法似乎会生成新的array浪费记忆体? 06/13 05:26
6F:→ MOONRAKER: 有证据说closure的array传递不用reference吗? 06/13 12:29
一个for就可以搞定了
$a=[2,7,14,28,32,38,41,49];
$two_pair_as_range_compare = function($array, $compare){
for($i=0;$i<count($array);$i+=2){
if( $compare>=$array[$i] && $compare<=$array[$i+1] )
return true;
}
return false;
};
我把大家的写法都放上来测试
for 效能最佳
http://ideone.com/fJ6fvK
程式还是能简单就简单 是这样吗? XD
※ 编辑: ImNot5566 (114.37.122.124), 06/13/2015 13:42:56