我试图找到两个数字之间的单位数量,这些数字在0和一个限制之间,并且超过了该限制。这是我的功能。它工作正常,直到我必须处理一些需要大量时间处理的巨大数字。我试图找到一种方法来执行此代码而不使用循环。PHP - 两个数字之间的单位数
public function getBetween($num1, $num2) {
$limit = 500000;
$array = array(0,0,0);
if ($num1 >= $num2) {
$low = $num2;
$high = $num1;
} else {
$low = $num1;
$high = $num2;
}
for($i=$low; $i < $high; $i++) {
if ($i < 0) {
$array[0]++;
} elseif ($i >= 0 && $i < $limit) {
$array[1]++;
} else {
$array[2]++;
}
}
return $array;
}
我开始我的循环分成ELSEIF语句,但这是越来越乱真快,我还必须最终能够设置一个以上的限制将变得无法使用。
if ($low < 0 && $high < 0) {
} elseif ($low < 0 && $high >= 0 && $high < $limit) {
} elseif ($low < 0 && $high >= $limit) {
} elseif ($low >= 0 && $low < $limit && $high < 0) {
} elseif ($low >= 0 && $low < $limit && $high >= 0 && $high < $limit) {
} elseif ($low >= 0 && $low < $limit && $high >= $limit) {
} elseif ($low >= $limit && $high < 0) {
} elseif ($low >= $limit && $high >= 0 && $high < $limit) {
} elseif ($low >= $limit && $high >= $limit) {
}
我想找到一个干净的方式来做到这一点。有任何想法吗?
编辑
这里是阵列我想要得到的一个例子。 如果我的极限是500,$num1
= -100和$num2
= 700我会得到阵列
$array[0] = 100
$array[1] = 500
$array[2] = 200
对不起,我刚刚读到'我还必须最终能够设置多个限制',我假设我的答案不符合它。你能否给出一个例子,说明预期有多个限制的结果? – 2014-11-04 14:33:38
我目前不是百分之百地确信我将如何用更多的限制来完成。但我会得到一个限制 $ limits = array(0,500,2000,10000); 我会检查0之前,0到500之间,500到2000之间,2000到10000之间,超过10000之间的单位数。就像我说的,我不知道如何去做,但我会依赖于我最终使用的解决方案。 – 2014-11-04 15:21:38
我刚刚编辑了我的答案,用尽可能多的限制符合您的需求。 – 2014-11-04 15:54:54