我試圖找到兩個數字之間的單位數量,這些數字在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