根据N个类别拆分数据,X数据总数限制

时间:2014-07-19 09:16:04

标签: php

行。我在PHP项目中工作。

我的数据库中有一些分类数据 -

例如 - 我有三个类别的数据。

  

第1类   第2类
  第3类

可以更改类别。像2,3,4,5等。

我有能力显示数据限制。

实施例。让我们说Admin只想显示9条记录

所以现在我们有三个类别和x限制(根据示例为9)。最好的是 -

我需要显示每个类别的N条记录和总X条记录。

这里N个数字适用于每个类别。所以它看起来像这样:

  

N1 + N2 + N3 = X(限制例9)

     

来自Category1的N1来自Category2的N2中来自Category3的N3

所以基本上我已经像这样制定了它 -

  

NumberOfRecordPerCategory = X(限制)/ N(类别数量)

但如果我将限制倍数设为3,如6,9,12等,它实际上是有效的。

所以我的问题是 -

  

如何根据限制(X)管理总记录 -
  1.如果管理员设置的限制不是多重3,如8,10,11等。
  2.如果管理员更改了类别2或4的类别,那么我该如何管理呢?

请对此有所了解。如果问题不明确,请告诉我。

1 个答案:

答案 0 :(得分: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     
}