我有一个数组$ myarray; 我想对数组内容进行分页,这是我在想的事情:
//Find total number of rows
$all_rs = $newArrayOfRows;
$this->total_rows = count($all_rs);
//Max number of pages
$this->max_pages = ceil($this->total_rows / $this->rows_per_page );
if ($this->links_per_page > $this->max_pages) {
$this->links_per_page = $this->max_pages;
}
//Check the page value just in case someone is trying to input an aribitrary value
if ($this->page > $this->max_pages || $this->page <= 0) {
$this->page = 1;
}
//Calculate Offset
$this->offset = $this->rows_per_page * ($this->page - 1);
//Fetch the required result set
如何加入所有这些信息,以便从我的初始数组中获取每个页面所需的信息? Ty非常
答案 0 :(得分:2)
我猜你的变量$all_rs
你的数组是数据库结果集。
如果是这样,您应该只从数据库中获取要在该给定页面上显示的行。
您不应该获取表中的每一行,只显示其中的一些。一旦您的网站有一些真正的流量,这样做对您的服务器来说太多了,整个网站将停止运作。要求提供超出您需要的数据......
要仅获取所需的行,请在SQL查询中使用LIMIT
子句,该子句允许您指定要检索的行数和偏移量(要跳过的行数)。逻辑基本上与您现在想出的方法相同,以弄清楚如何切割数组。相反,您可以使用它来确定要在数据库查询的LIMIT
部分中放入哪些数字。
答案 1 :(得分:0)
数组切片应该这样做。
array array_slice(array, offset[, length]);
array: Base array to be used
int offset: Starting element index
int length (optional):
但是你确定要像这样复制你的数据吗?
您可能只想要一个访问者,为您提供第一项页面
$ item = c-&gt; getItem($ pageNumber,$ itemNumber);
答案 2 :(得分:0)
$array = array_slice($all_rs, $this->offset, $this->rows_per_page);
所以$array
将包含所需的子集。
答案 3 :(得分:0)
看起来$newArrayOfRows
是我的。 ;)
//Find total number of rows
$all_rs = $newArrayOfRows;
$this->total_rows = count($all_rs);
//Max number of pages
$this->max_pages = ceil($this->total_rows / $this->rows_per_page );
if ($this->links_per_page > $this->max_pages) {
$this->links_per_page = $this->max_pages;
}
//Check the page value just in case someone is trying to input an aribitrary value
if ($this->page > $this->max_pages || $this->page <= 0) {
$this->page = 1;
}
//Calculate Offset
$this->offset = $this->rows_per_page * ($this->page - 1);
//Fetch the required result set
for($n = $this->offset;$n < $this->rows_per_page;$n++){
$thisPageArray[] = $newArrayOfRows[$n];
}
//NOW $thisPageArray HAS THE ROWS OF THIS PAGE.