2013-02-27 71 views
1

我正在修改OpenCart的一個產品過濾器,以便按價格過濾出產品。我所做的是獲得屬於某個類別的所有產品並提取其價格以將其放入滑塊中,但這根本不是優雅或「專業」的,我想編寫一個適當的解決方案。PHP - 獲得最接近的數字給定一定數量?

比方說,我有以下價格:125,270,517,1680和14790.我想要做的(理想情況下)是獲得最高的數字(在這個簡短的例子中是14790),並從中得到一些東西比如'15000',所以我可以在給定因子(如100)之間進行分割,並將其放入滑塊中。

是否有PHP函數來做這種計算?

+1

希望這有助於你http://stackoverflow.com/questions/14935390/convert-adjust-number-in-a-specific-counting-with-php/14935471#14935471 – Rikesh 2013-02-27 08:28:47

+0

好辦法,它不完全我在找什麼,但我有一個關於在哪裏使用那個的想法。非常感謝:) – 2013-02-27 08:52:17

回答

2

獲取最大數量,然後繞着它到最近千?

<?php 

$largest = max(125, 270, 517, 1680, 14790); 

$nearest = ceil($largest/1000) * 1000; 
+0

_Chapeau!_正是我在找的東西。非常感謝你 :) – 2013-02-27 08:48:43

1

您可以循環瀏覽數字,記住最高價值。這是常見的編碼習慣。 (確實還有max()函數,echo max(1,3,5,6,7); // 7

然後你可以用你的因子除最高的數字,取整數你得到並添加一個,然後乘以因子再次,你去了。

1

只要:x = floor(14790/100); floor函數返回下一個最小的整數值

+0

嗯不完全是我在找什麼,但謝謝你的答案:) – 2013-02-27 08:37:43

3

如果我理解你的問題,並且要求四捨五入到基本上最接近的100,那麼沒有特定的函數,但是可以用一些數學運算最近的百位,如下所示:

$price = ceil($price/100) * 100; 

使用:

$price = ceil($price/1000) * 1000; 

會四捨五入到最近的1000

+0

好想法。答案非常接近,ceil函數是確定最接近的數字的關鍵。我跟着@sjdaws的答案,我得到了我所需要的。非常感謝你:) – 2013-02-27 08:50:22