2012-04-04 21 views
3

我有一個包含文章列表的網站。我想添加一行說明數據庫中有多少文章,但我不希望它顯示確切的數字。PHP中的大概計數

我想它四捨五入到最接近的10,因此,例如爲105篇,我想它說「100+」等

我怎麼會去這樣做呢?

+2

所以18155會是18150+? – 2012-04-04 06:27:15

+0

是的,這是正確的。 – 2012-04-04 06:32:37

+0

我對所有的答案感到莫名其妙。 xP – 2012-04-04 06:36:03

回答

5

很簡單:

floor($num/10) * 10 

docs

+0

將此標記爲接受的答案。非常簡單,鏈接到文檔感謝。 – 2012-04-04 06:39:05

2
$count = 105; 
$nearest10 = floor($count/10) * 10; 
+0

也標記了這個答案。這與已發佈的答案相同,都表示「10分鐘前」,我只能選擇一個可接受的答案。 – 2012-04-04 06:42:05

1
printf("%d0+", $count * 0.1); 

echo substr($count, 0, -1), '0+'; 

而且roundDocs功能不支持開箱即用,太:

round($count, -1, PHP_ROUND_HALF_DOWN); 

但加號丟失。

+0

+1替代方法(但你不需要'%u0 +'來代替?)。另外,不會'圓($ count,-1);'工作? – 2012-04-04 06:38:05

+1

如果你不想搞亂整數限制:'printf(「%。0F0 +」,$ count,floor($ count * 0.1));' - '%u'不能處理那麼多,請參見http: //codepad.org/cQ9Nu619 – hakre 2012-04-04 06:43:04

+0

哦!沒關係,我很困惑'%d'的浮動表示。 – 2012-04-04 06:54:26

3

做同樣的事情,你必須使用對數與基地= 10和圓形它

$exp= floor(log($num)/log(10)); 
$num = pow(10,$exp)."+"; 

這適用於10,100,1000 ECC,我覺得它做的更好,你問什麼。

+0

我同意,從我+1。 – 2012-04-04 06:36:51

+0

接受的答案似乎適用於我所需要的,並且我用很多不同的數字嘗試了它,並且它有點短。我會標記這個答案,但它也適用。 – 2012-04-04 06:40:47

0

首先,您將需要使用MySQL的聚合函數來獲取結果的總數,或類似的東西。

然後,你將需要與10使用模運算符(%)作爲基礎,然後從主結果扣除值,這將是這樣的: -

$sql = "SELECT COUNT(id) AS `total_num_records` FROM `table`"; 
$resource = mysql_query($sql); 
$result = mysql_fetch_array($resource); 
$totalRecords = $result['total_num_records']; 

if ($totalRecords > 0) { 
    $remainder = $totalRecords % 10; 
    $showHumanFriendlyRecords = ($totalRecords - $remainder); 
    $strHumanFriendlyRecords = $showHumanFriendlyRecords . "+"; 
} 

希望它可以幫助。