2014-07-19 71 views
1

OK。我正在PHP項目中工作。根據N個類別劃分的數據與X個總數據限制數

,我有我的數據庫中的一些分類的數據 -

對於示例 - 我有三類數據。

類別1個
類別2
類別3個

類別可以改變。像2,3,4,5等

而且我有設施來顯示數據的限制。

Ex。可以說,管理員只想顯示9條記錄

所以現在我們有三個類別和x限制(根據示例,這是9)。最好的事情是 -

我需要顯示N個記錄從每個類別和總X記錄。

這裏N個數字是針對每個類別的。因此,它看起來就像這樣:

N1 + N2 + N3 = X(限前9)

N1從組別
N2從產品組別
N3從類別3

所以基本上我已經這樣制定它 -

NumberOfRecordPerCategory = X(限制)/ N(個數)

但它實際上是工作,如果我設置的3限制多像6,9,12等

所以我的問題是 -

如何管理根據總記錄限制(X) -
1.如果管理員設置的限制不是3倍,如8,10,11等
2.如果管理員更改類別的數目喜歡2或4,那麼我怎麼能管理這個?

請對此有所瞭解。如果問題不清楚,請讓我知道。

謝謝

回答

0

我會選擇你的要求是ceil(圓的分數)。如果因爲數字不是3的倍數而存在一些分數,例如11個分類爲3個,那麼對於每個類別具有4,4,3的限制。這可以通過有兩個限制值來完成:總數限制,每個類別限制。(代碼):

<?php 

/* 

$data = array (
"category1" => array (1,2,3,4,5), 
"category2" => array (10,20,30,40,50), 
"category3" => array (100,200,300,400,500), 
); 
*/ 

$limit = 11; // given by the admin 
$number_of_categories = count($data); 
$limit_per_category = ceil ($limit/$number_of_categories); // ceil (11/3) = 4 

$cnt = 0; // tracking the total number of retrieved data. 
foreach ($data as $row) { 
    $cnt_category = 0; 
    foreach ($row as $item) { 
    echo $item . "\n"; // print the first N (NumberOfRecordPerCategory) data 
    $cnt_category++; 

    $cnt++; 
    if ($cnt >= $limit) break; // exit the loop 
    if ($cnt_category >= $limit_per_category) break; // move to next category 
    } 
    if ($cnt >= $limit) break; // exit the loop  
} 
+0

感謝您的意見。 –